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

Подскажите пожалуйста, в state записывается новый обьект или ссылка на

существующий если я передам например в него setState(user.firstName)?

15 ответов

11 просмотров

запишется ровно то что ты передашь

Руслан-Красюк Автор вопроса
🅅aleriy 🄺obzar
запишется ровно то что ты передашь

это будет новый обьект со своей выделенной памятью или ссылка на уже существующий?

Руслан Красюк
это будет новый обьект со своей выделенной памятью...

ну если ты сформируешь новый объект то новый передастся

Руслан-Красюк Автор вопроса
🅅aleriy 🄺obzar
ну если ты сформируешь новый объект то новый перед...

у меня есть массив объектов, я записываю в state второй элемент этого массива. если я захочу изменить этот второй элемент где то, объект записанный в state тоже изменится или нет?

Руслан Красюк
у меня есть массив объектов, я записываю в state в...

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

Руслан-Красюк Автор вопроса
🅅aleriy 🄺obzar
создавай новый массив всегда когда речь идет об из...

спасибо большое, уже разобрался. в state записывается ссылка на обьект ф

Руслан Красюк
у меня есть массив объектов, я записываю в state в...

вот не надо использовать массивы объектов. Нужно использовать два разных состояния: что то типа interface Todo { content: string; isChecked: boolean; } interface TodoData { [keys: number]: Todo; } const [todoIdList, setTodoIdList] = useState<number[]>([]); const [todoData, setTodoData] = useState<TodoData>({}); Таким образом, если например по ид необходимо изменить значение полей какого ибо объекта, то это делаеться так (todoId это искомый ид): const currentTodo: Todo = { ...todoData[todoId], isChecked: value }; setTodoData((prev) => ({ ...prev, [todoId]: currentTodo })); А если нам нужно например поменять позицию элементов массива, то todoData вообще не учавствует в этой операции., что очень сильно упрощает собственно алгоритм операции. Если же мы используем массив из элементов вида interface Todo { id: number; content: string; isChecked: boolean; } то простая вещь, по типу поменять значение поля content, значительно усложняется, так как необходимо будет совершить множество лишний действий, как по фильтрации, так и по иммутабельному пересозданию массивов на основе предыдущих значений. Что например к операции по изменению поля элемента вообще не имеет отношения, так как в данном случае для самих объектов с полями значений todoItem порядок вообще не имеет значения.

Руслан-Красюк Автор вопроса
cool29horhoj
вот не надо использовать массивы объектов. Нужно ...

а если у меня полей 10? десять состояний создавать? например в моем случае у меня есть узлы (объекты в массиве), в этих узлах могу быть дочерние узлы, каждый узел это объект с 10 полями, которые пользователь может изменять, как решить эту задачу?

Руслан Красюк
а если у меня полей 10? десять состояний создавать...

ДА. СОздавать столько состояний, сколько нужно.

Руслан-Красюк Автор вопроса
cool29horhoj
ДА. СОздавать столько состояний, сколько нужно.

а как быть с тем, что в элемента может быть дочерний элемент, который рекурсивно надо изменять

Руслан-Красюк Автор вопроса
🅅aleriy 🄺obzar
вот только деревья не нужно делать в стейте

мне надо это сделать, как выйти из ситуации?

Руслан Красюк
а как быть с тем, что в элемента может быть дочерн...

Ну почитай что нибудь про нормализацию данных

Руслан-Красюк Автор вопроса
cool29horhoj
Ну почитай что нибудь про нормализацию данных

еще не знаком с этим понятием, утром прочитаю. спасибо)

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта