ReactJS: изменить значение свойства объекта с помощью setState - PullRequest
0 голосов
/ 12 июля 2019

У меня есть следующий код в конструкторе:

this.state = {
              messageBox: { open: false, title: 'title', content: 'content', onConfirm: function() {console.log('confirm')}, onCancel: function() {console.log('cancel')} },
            };

Теперь я хотел бы изменить только свойство open с помощью setState. Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 12 июля 2019

Использование Оператор распространения (ES6)

this.setState({ messageBox: { ...this.state.messageBox, open: true } });

Использование Object.assign

this.setState({ messageBox: Object.assign({}, this.state.messageBox, { open: true } ) });
0 голосов
/ 12 июля 2019

На этот вопрос очень хорошо ответили:

Как обновить свойства вложенного состояния в React

Но IMO лучшие ответы - те, которые указывают, что вложенное состояние не поддерживается напрямую по причине, и, вероятно, его следует избегать, если это возможно.

...