gpt4 book ai didi

javascript - 修改组件的状态然后调用 "setState(this.state)"是一种好习惯吗?

转载 作者:行者123 更新时间:2023-11-29 17:00:48 25 4
gpt4 key购买 nike

我正在使用 ReactJS。

我有一个有状态组件(秒表容器)和多个无状态子组件(秒表)。

在外部组件中,我正在做这样的事情:

// the outer component is a "container" for multiple stopwatches
tick: function() {
for (var i = 0; i < this.state.stopwatches.length; i++)
{
// if a particular stopwatch is "started", I'll increase it's time
if (this.state.stopwatches[i].status == "started")
{
this.state.stopwatches[i].time.seconds++;
// do some processing
}
}
// this is the suspicious code!
this.setState(this.state);
}

请注意,我正在更改 this.state 属性,然后在 state 对象本身上调用 setState()。这对我来说似乎是错误的。但是,另一方面,为了操纵state对象本身,我必须克隆它然后执行setState(stateClone),但我不确定是否可以在 JS 中有效地克隆对象,也不确定我是否真的应该这样做。

我可以继续执行 setState(this.state) 吗?

最佳答案

您可以调用 this.forceUpdate() 而不是调用 this.setState(this.state) .

请记住,这不是更新组件状态的推荐方式。如果您不确定自己的修改,请查看 Immutability Helpers .

关于javascript - 修改组件的状态然后调用 "setState(this.state)"是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28300547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com