當更新狀態的組件在陣營是它被認爲是不好的做法,當一個組件使用當前狀態更新新的狀態。的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。 –