Ilya
Хорош ругаться, вы шо
Bogdan
Хорош ругаться, вы шо
да кто ругается, люди вопрос не поняли и сразу в доку, люблю таких
Ilya
Как говорится фронтендеры активные геи, бэки- пассивные
Bogdan
это не смущает человека?
ну это понятно, я кейс описал выше вот
Maksim
в useMemo не может быть сайдов, поэтому ответ очевиден
Bogdan
в useMemo не может быть сайдов, поэтому ответ очевиден
уставновка опции в селект это разве сайд еффект?
Тимофей 🛴
Bogdan
а что же это?
ну смотри, если ты установишь первый пункт в селект в useEffect - у тебя будет первый рендер => установка значения в селект => апдейт а если заюзать useMemo = у тебя в селект значение попадет до рендера и не будет апдейта, это не плюс разве?
Bogdan
Sergey
const [selected, setSelected] = useState(0) <select> <option selected={0 == selected}>First</option> </select>
Тимофей 🛴
Пиздец
Oleg
сложное слово... очень... сложно.... а
Sergey
господи, что за бесполезный код?
Sergey
это всё заменяется на один useState из примера выше нафига так оверинжинирить
Maksim
боже, не показывай больше никому такое
Bogdan
господи, что за бесполезный код?
это не я делал, это было уже, но суть в том, что до рендера в селект установится значение
Oleg
какое-то горе от ума выходит.
Коля
Братишка, лучше бы ушел доку почитал....
Sergey
Bogdan
useState больше ничего не надо
зачемы useState? бля тут кто то суть кейса понял вообще? если не понятно, лучше переспросить
Sergey
Sergey
я кейс выше показал
Sergey
че ты за бред пишешь
Sergey
const [selected, setSelected] = useState(0) <select> <option selected={0 == selected}>First</option> </select>
Sergey
спасиб, не буду
Bogdan
const [selected, setSelected] = useState(0) <select> <option selected={0 == selected}>First</option> </select>
если нужно отсортировать например, а не просто первый елемент засунуть
Sergey
сортируй данные заранее
Sergey
сначала сортировка, потом рендер
GG
const [selected, setSelected] = useState(0) <select> <option selected={0 == selected}>First</option> </select>
+ почти. Только ему надо установить первый элемент в зависимости от пропса, но тоже не проблема const [selected, setSelected] = useState(props.a ? 0 : 1) <select> <option selected={0 == selected}>First</option> </select>
Bogdan
что отсортировать?
в пропсах массив с пунктами для селекта, его отсортировать по алфавиту и первый елемент засунуть сразу в селект
Sergey
const sorted = sortList(props.list) const [selected, setSelected] = useState(sorted)
Bogdan
const sorted = sortList(props.list) const [selected, setSelected] = useState(sorted)
на каждый апдейт это будет пересчитываться, красиво
Sergey
на каждый апдейт это будет пересчитываться, красиво
ты знаешь что такое полная постановка задачи?
Коля
сортировку можно запихнуть в useMemo. Но измение значения - это что-то очень странное
Bogdan
ты знаешь что такое полная постановка задачи?
так вы все налетели, все умные, но никто не понял кейса, можно было уточнить, я бы сразу все описал
Sergey
const sorted = useMemo(() => sort(props.list), [props.list]) const [selected, setSelected] = useState(sorted[0])
Bogdan
Что мешало тебе сразу кейс описать?
ну забыл некоторые детали
GG
ну забыл некоторые детали
подумаешь. с кем не бывает
Bogdan
подумаешь. с кем не бывает
ну да, да сагрились все, я растерялся
GG
вообщем ему надо установить дефолт стейт, предварительно вычислив его из пропсов
Bogdan
короче, есть вот селект, ему приходит в пропсах массив, массив нужно отсортировать и первый пункт вставить в селект, вот, следовательно чел в useMemo сортирует и сразу в нем ставит первый елемент, это все происходит до рендера, если не брать useMemo - все вычисления произойдут после первого рендера, тоесть селект будет пустой, а при апдейте уже установится значение, я хз как лучше описать
Sergey
даже если нет memo все вычисления будут до рендера
Bogdan
чееее
да, но тогда на каждый апдейт они будут, забыл дописать
Sergey
да, но тогда на каждый апдейт они будут, забыл дописать
ты не забыл написать. ты херню написал. не будет там ничего ПОСЛЕ рендера
Mihail
где тут вызов setSelected
зачем его вызывать, если начальное состояние будет задано до рендера?
Коля
где тут вызов setSelected
а sortList, возвращая array.map, не сможет поставить первый элемент active?
Mihail
да, я увидел
и что не так тогда?
Bogdan
и что не так тогда?
теперь все так, да, этот способ норм
Коля
эээ так лучше не делать
ну да, согласен((
Bogdan
я еще что то упустил, тут условие еще, типо не всегда нужно первый выбирать
Bogdan
const sorted = useMemo(() => sort(props.list), [props.list]) const [selected, setSelected] = useState(sorted[0])
в этом варианте выпадет ошибка, еслт массив пустой например
Bogdan
какая?
sorted[0] - undefined
Sergey
sorted[0] - undefined
и в чем ошибка?
Sergey
sorted — пустой массив
Sergey
Bogdan
и в чем ошибка?
может и не будет, не помню, что будет, если селекту передать undefined