169 похожих чатов

Добрый вечер. вероятно то с чем я столкнулся стандартная ситуация,

но я впервые применяю while в jsx и для меня было неожиданностью что полученный аргумент (i) для передачи в функцию онклик оказался не тот который я ожидал. чем можно заменить такую конструкцию? я понимаю что мап лучше, но он немного не то делает. изначально i равно какому-то числу больше 1. и тут создаются кнопочки с соответствующими циферками, при нажатии на которые происходит действие согласно этого номера. но номер у всех одинаковый получился.
while (i < pages) {
listPages.push(
<a href="#" onClick={(e) => getNewPage(e, i)} > {i} </a> );
i++;
}
после чего я показываю listPages.map((item) => item) и тут уже все понятно.

24 ответов

30 просмотров
Roman-M Автор вопроса

так в компоненте ничего интересного. главное отрисовать эти кнопочки, но начинать не с начала,а а с определенного значения и до определенного значения

Roman M
так в компоненте ничего интересного. главное отрис...

Я хз просто React.createElement() синхронный или асинхронный. Во втором случая у тебя скорее всего при ее вызове этой функции все ссылается на одну и туже переменную, потому и значение одинаковое

Roman-M Автор вопроса
Alexander
Я хз просто React.createElement() синхронный или а...

именно так. поэтому везде советуют сначала заполнить массив, а потом мапом сделать. но и тут не получается, в массиве все на одну так же ссылвается. остается сделать вообще массив этих значений, но одной командой я не нашел как сделать массив от определенного до определенного значения чисел, а просто заполнять массив числами через for или while и push как-то не правильно выглядит. хотя вероятно так и придется делать.

Ты можешь сохранить I через замыкание, а здесь он каждый раз будет меняться

Roman-M Автор вопроса
Alex
Ты можешь сохранить I через замыкание, а здесь он ...

можно просить схематичный пример как это сделать?

Roman M
можно просить схематичный пример как это сделать?

Конечно) while (i < pages) { listPages.push( <a href="#" onClick={(y =>(e) => getNewPage(e, y))(I)} > {i} </a> ); i++; }

Roman-M Автор вопроса
Alex
Конечно) while (i < pages) { listPages....

спасибо. попробую. в крайнем случае сделаю просто текстом и его буду показывать.

Roman M
спасибо. попробую. в крайнем случае сделаю просто ...

А ну и внутри самой ссылки можно тоже через замыкание сохранить, я забыл добавить. Но вообще ты можешь заранее сгенерить массив и сразу мапить, не используя while

Roman-M Автор вопроса
Alex
А ну и внутри самой ссылки можно тоже через замыка...

да, об этом я как раз и писал в ответе, но короткого решения не нащшел, а по простому через пуш создавать массив как-то некрасиво.

Roman-M Автор вопроса

но тут количество может быть разное и не с начала начинаться.так пробовал. получается нормально.

const newArr = (start, end) => Array(end-start + 1).fill().map((_, index) => start + index)

Roman-M Автор вопроса
Alexander
const newArr = (start, end) => Array(end-start + 1...

спасибо. вот так составить пробовал, но не получилось в итоге. попробую Ваш вариант.

Roman M
но тут количество может быть разное и не с начала ...

Array.from({ length: pages }, (_, i) => <div>{i}</div>) - и никаких while и map

Roman-M Автор вопроса
IceBerg
Array.from({ length: pages }, (_, i) => <div>{i}</...

спасибо. с fill отлично пошло. как и с applay ранее, но красивее и современнее.

Roman-M Автор вопроса
IceBerg
с from нет лишних действий

спасибо. и так попробую завтра.

IceBerg
Array.from({ length: pages }, (_, i) => <div>{i}</...

А почему не классику? new Array(10).fill(0).map()

IceBerg
что тут классического?)

Более понятно чем создание массива из псевдомассива

Alexey Shevchenko
Более понятно чем создание массива из псевдомассив...

не соглашусь, подобное использование псевдомассива используется повсеместно, воспринимается как опция

IceBerg
не соглашусь, подобное использование псевдомассива...

Буду знать, и мб код станет проще, но не факт

rnamod1
Где кеу

подловил

rnamod1
Где кеу

Будет больше элементов чем между end и start. Последний элемент будет меньше на единицу чем end

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта