当更新状态的组件在阵营是它被认为是不好的做法,当一个组件使用当前状态更新新的状态。的setState反应根据当前状态
例如,如果我有一个存储过滤器是否打开或没有在它的国家一类,是这些选项在性能方面的更新状态比其他更可取呢?
选项1:
class Container extends Component {
state = {
show: false
}
show =() => this.setState({ show: true })
hide =() => this.setState({ show: false })
render() {
<ExternalComponent
show={this.show}
hide={this.hide}
/>
}
}
选项2:
class Container extends Component {
state = {
show: false
}
toggleVisibility =() => this.setState({ show: !this.state.show })
render() {
<ExternalComponent
toggleVisibility={this.toggleVisibility}
/>
}
}
方案3:
class Container extends Component {
state = {
show: false
}
setShow = (newVal) => this.setState({ show: newVal })
render() {
<ExternalComponent
setShow={this.setShow}
/>
}
}
我不明白为什么这会被认为是不好的做法,除了状态更改是异步和可合并的。这可能是一个合理的担忧 - 你可能得不到你的期望。我个人更喜欢选项#3。 –