redux 如何在React中动态创建状态?

ovfsdjhp  于 2022-11-24  发布在  React
关注(0)|答案(4)|浏览(151)

是否可以在不使用构造函数内的对象的情况下创建状态?
我需要动态地在组件内部创建新的状态。有什么建议吗?

11dmarpk

11dmarpk1#

状态对象实际上就是一个Javascript对象,因此它已经是动态的了。
如果你愿意,你可以随时随地修改它。但是这完全打破了React提供给你的好的设计模式--数据的单一真实来源,并且不改变任何状态对象,给你一个发生的每个动作的完美历史,使调试变得易如反掌。
这就是为什么他们鼓励您创建一个初始状态,然后使用setState,它只是在修改指定的字段时创建一个新的副本。
向下跳至“正确使用状态”:https://facebook.github.io/react/docs/state-and-lifecycle.html
如果你需要“动态地创建新的状态”,有什么理由你不能用初始值在构造函数中定义这些状态,不管你是否使用它们?我看不出有什么理由它们一开始就不存在,而只是有一个初始状态。更多关于你试图做什么的细节会很有帮助。

9fkzdhlc

9fkzdhlc2#

如果你使用的是typescript,我会这样定义你的状态:

interface IComponentState {
    dynamicState: any
}

然后您可以将任何对象分配给此dynamicState....或分配给它任何数量的选项...
在普通JS中,你甚至不需要分配类型,所以它会更简单--只需要在开始时分配空对象

ijnw1ujt

ijnw1ujt3#

在内部方法- render中创建状态是个坏主意。
React建议在构造函数中只使用setState()或'state =...'。

wgx48brx

wgx48brx4#

如果新状态元素的键(字符串)存储在变量newKey中,则可以使用

this.setState({ [newKey] : "new value" });

以动态添加状态。
我发现这在基于模板呈现页面时很有用,因为我们事先不知道要呈现的元素(以及它们的状态变量要求)。

相关问题