使用setState反应通配符

时间:2017-05-04 10:54:23

标签: javascript reactjs ecmascript-6

我有

this.state = {
   modal_1: true,
   modal_abc: true,
   modal_special: true
}

如何将以modal开头的所有内容更改为false?是否有可能

this.setState({
    `modal_*`: false
})

1 个答案:

答案 0 :(得分:1)

在React的setState方法或javascript的对象文字中没有通配符。您可以手动迭代对象键并减少它,例如:

const newState = Object.keys(this.state).reduce((result, key) => {
  // conditionally set value of result
  result[key] = key.startsWith('modal_') ? false : this.state[key];
  return result;
}, {});
// and set new state
this.setState(newState);