数组的forEach和setState

Cas*_*Lim 0 javascript reactjs

我打印我现有的状态,例如console.log(this.state)

{'abc-sorted':false, 'def-sorted': 'asc', 'someotherstuff-sorted': true, show: true}

我想做的是将所有状态都设置为以“ -sorted”状态键结尾的状态,我该怎么办?

我做了这个“丑陋”的事情。

Object.keys(this.state).filter(o=>{
                return o.endsWith('sorted') 
            }).forEach(o2 => {
                this.setState({
                    [o2]: false
                })
            })
Run Code Online (Sandbox Code Playgroud)

还有其他选择吗?这导致了不必要的渲染。

klu*_*gjo 7

尝试首先生成一个对象。然后设置您的状态。这样,您将只设置一次。

const newState = {};

Object.keys(this.state).forEach(key => {
    if (key.endsWith('sorted')) {
      newState[key] = false;
    }
});

this.setState(newState);
Run Code Online (Sandbox Code Playgroud)