Как стать автором
Обновить

Комментарии 4

Получается состояние всегда нужно хранить в компоненте родителе? Ведь мы, когда щелкаем по флажку, изменяем состояние только одного экземпляра компонента TodoItem, а перезаписываем состояния всех. Возможно ли хранить состояние каждого из них отдельно и целесообразно ли это? Будет ли дальше в курсе об этом поподробнее? Если нет, то где можно почитать про такие нюансы?
Запоздалый коментарий, но вопрос наверное возникает у всех кто с этим сталкивается. Поэтому всё равно отвечу. Возможно, как и мне, вам будет понятнее на примере из туториала по созданию игры. Также есть глава Сила иммутабельных объектов в советах по оптимизации. В ней также объясняется почему рекомендуют делать так.
Но в этом обработчике меняется предыдущий state, пусть и неявно. Массив todos состоит из объектов, в map попадают ссылки на объекты, а не его копии. После прохода map'ом можно посмотреть в консоли, что изменения произошли и в prevState.todos.
  handleChange(id) {
    this.setState(prevState => {
      return {
        ...prevState, 
        todos: prevState.todos.map(item => {
          return item.id === id ? {...item, completed: !item.completed} : item
      })}
    })
  }
Зарегистрируйтесь на Хабре, чтобы оставить комментарий