@Nivaech

Как назначить false всем свойствам кроме одного?

Есть компонент с множеством связанных между собой состояний. Если булево значение одного состояния изменяется на true, то все другие должны стать false, например. Можно ли как-то выделить множество state за раз и задать им нужное булево значение, чтобы не прописывать состояния одно за другим и не присваивать одинаковое значение каждому?

showWindow1= () => {
    this.setState(() => {
      return {
        openWindow1: true,
        openWindow2: false,
        openWindow3: false,  
        openWindow4: false,
        openWindow5: false
      }
    })
  }
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
this.setState(state => Object
  .keys(state)
  .reduce((acc, n) => (acc[n] = n === 'свойствоКотороеДолжноБытьTrue', acc), {})
);

Только наверное все эти булевы свойства надо убрать в отдельный объект - у вас же скорее всего ещё что-то кроме них в стейте есть.

Ну и ещё не очень понятен такой момент - а всегда ли true может быть только одно свойство? Если действительно всегда, тогда вам не нужно множество свойств, достаточно единственного, которое будет не булевым, а числом/строкой, содержащей в себе id/индекс/имя той сущности, которая в данный момент true.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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