Size: a a a

React — русскоговорящее сообщество

2020 December 28

as

artem sdobnikov in React — русскоговорящее сообщество
Maksim Kolyada
в дебагере данные уже пришли
первый вопрос
какое ты поведение хочешь увидеть?
один лист ты мепишь, тут нет

const [list2, setList2] = useState([]);
return (
   <div className="Root">
       {list2}
   </div>
);
источник

PZ

PARA ZITE in React — русскоговорящее сообщество
const [state, setState] = useState('AWESOME STRING')

const changeString = () => {
   console.log(state)
   setState('WAT')
   console.log(state)
}
источник

MK

Maksim Kolyada in React — русскоговорящее сообщество
artem sdobnikov
первый вопрос
какое ты поведение хочешь увидеть?
один лист ты мепишь, тут нет

const [list2, setList2] = useState([]);
return (
   <div className="Root">
       {list2}
   </div>
);
пишем в input имя элемента, жмем кнопку Add элемент имя элемента рендерится перед формой
источник

PZ

PARA ZITE in React — русскоговорящее сообщество
А зачем 2 листа?
источник

MK

Maksim Kolyada in React — русскоговорящее сообщество
PARA ZITE
А зачем 2 листа?
почему компонент в handleList2 теряет _owner и из-за этого list2 вообще никогда не рисуется?
источник

as

artem sdobnikov in React — русскоговорящее сообщество
Maksim Kolyada
почему компонент в handleList2 теряет _owner и из-за этого list2 вообще никогда не рисуется?
может как минимум потому что ты его не мепишь в jsx?
источник

as

artem sdobnikov in React — русскоговорящее сообщество
Maksim Kolyada
почему компонент в handleList2 теряет _owner и из-за этого list2 вообще никогда не рисуется?
второй вопрос
что лежит в arr?

let arr = list2;
arr.push(component);
setList2(arr);
источник

MK

Maksim Kolyada in React — русскоговорящее сообщество
artem sdobnikov
может как минимум потому что ты его не мепишь в jsx?
потому что он уже jsx
источник

as

artem sdobnikov in React — русскоговорящее сообщество
artem sdobnikov
первый вопрос
какое ты поведение хочешь увидеть?
один лист ты мепишь, тут нет

const [list2, setList2] = useState([]);
return (
   <div className="Root">
       {list2}
   </div>
);
у тебя в коде это массив
или где я ошибаюсь?
источник

MK

Maksim Kolyada in React — русскоговорящее сообщество
artem sdobnikov
второй вопрос
что лежит в arr?

let arr = list2;
arr.push(component);
setList2(arr);
текущий массив компонентов
источник

as

artem sdobnikov in React — русскоговорящее сообщество
Maksim Kolyada
текущий массив компонентов
окей
зачем ты копируешь ссылку на root?
и вызываешь push
если есть setRoot ?
источник

MK

Maksim Kolyada in React — русскоговорящее сообщество
artem sdobnikov
окей
зачем ты копируешь ссылку на root?
и вызываешь push
если есть setRoot ?
потому что root это константа
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
PARA ZITE
Фигней страдает просто, на твоем месте лучше пойти читать как работает useState и смотреть в useEffect

Если более точно, то пока не обновится компонент, он будет иметь не актуальный state
https://t.me/react_js/1082632
Вам вопрос если вы решили блеснуть знаниями
источник

as

artem sdobnikov in React — русскоговорящее сообщество
Maksim Kolyada
потому что root это константа
допустим
зачем тебе push? ты root можешь изменить только с помощью setRoot
источник

MK

Maksim Kolyada in React — русскоговорящее сообщество
artem sdobnikov
допустим
зачем тебе push? ты root можешь изменить только с помощью setRoot
let arr = root; - копирую текущее состояние
   arr.push(component); - добавляю в копию текущего состояние изменение
   setRoot(arr); - обновляю текущее состояние
источник

Т

Тимофей 🛴 in React — русскоговорящее сообщество
Maksim Kolyada
let arr = root; - копирую текущее состояние
   arr.push(component); - добавляю в копию текущего состояние изменение
   setRoot(arr); - обновляю текущее состояние
Ты не копируешь
источник

as

artem sdobnikov in React — русскоговорящее сообщество
Maksim Kolyada
let arr = root; - копирую текущее состояние
   arr.push(component); - добавляю в копию текущего состояние изменение
   setRoot(arr); - обновляю текущее состояние
let arr = root

ты копируешь не сам массив, а ссылку на массив
и метод пуш соответственно меняет исходный
источник

as

artem sdobnikov in React — русскоговорящее сообщество
Maksim Kolyada
let arr = root; - копирую текущее состояние
   arr.push(component); - добавляю в копию текущего состояние изменение
   setRoot(arr); - обновляю текущее состояние
советую прочитать
https://learn.javascript.ru/object-copy
тут простым языком
поймешь о чем я
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Давайте дружно все пойдем в релевантный чат а?
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Проблема в знаниях была указана уже давно
https://t.me/react_js/1082600
источник