@alesik

Как сделать тогл булевого свойства в стейте?

function Toggle() {
  let [state, setState] = useState({
    fromBook: [
      { text: "Отрывок из книги 1" },
      { text: "Отрывок из книги 2" },
      { text: "Отрывок из книги 3" },
    ],
    show: false,
    id: 0,
  });

  function showExcerpt() {
    let show = state.show;
    setState({ show: !show });
    console.log(state.show);
    console.log(state.fromBook);
{/*После второго нажатия state.fromBook становится undefined:*/}

  }

  return (
    <div>
      <button onClick={showExcerpt}>Показать отрывок </button>

      {/* <p>{state.excerpts[state.id].text}</p> */}
    </div>
  );
}
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Разделить объект state - для каждого из его свойств сделать отдельный вызов useState.

Или копировать все свойства при обновлении: setState({ ...state, show: !state.show });.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Asokr
setState({ show: !show });
Так вы переписываете state
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы