我可以在renderComponent之后立即调用setState吗?
ReactJS - Can I call setState immediately after renderComponent?
我使用React的一些客户端组件。在某些情况下,组件不知道它们的初始状态,所以我需要一种方法来呈现组件并在外部为其提供初始状态。
renderComponent
有一个回调方法:
ReactComponent renderComponent(
ReactComponent component,
DOMElement container,
[function callback]
)
显然:
如果提供了可选回调,它将在组件被渲染或更新
这很好,但是如果我在那个回调中调用setState
,在组件重新渲染自己之前,你仍然会看到初始(错误)渲染。
我的问题是,我可以这样做吗:
var myComponent = React.renderComponent(...);
myComponent.setState({...});
…安全吗?我是否可以假设renderComponent
至少以同步方式创建了该组件的后备实例,因此那里有可以调用setState
的东西?
这种模式似乎在我的临时测试中工作,使用本地主机服务器,但我想知道这是否有点类似于使用JS修改DOM而不等待旧的文档准备信号(即,容易产生不一致的行为)。
另一方面,我可以传入一个默认状态对象作为道具,然后构建组件,以便它检查该道具并在componentWillMount
或诸如此类的内容中填充自己的状态。这是否在React方式的范围内?
另一方面,我可以传入一个默认状态对象作为一个道具,然后构建组件,以便它检查该道具并在componentWillMount或诸如此类的东西中填充自己的状态。这是否在React方式的范围内?
是的。状态应该被当作组件的私有实例变量;你永远不应该从组件外部访问它们,但就像把选项传递给对象构造函数一样,在props中指定组件初始状态的某些部分也是有意义的。React的非受控组件(defaultValue
)就是这种模式的一个例子。
在可能的情况下,将状态存储在较高的位置并防止其不同步通常会更好,就像React的受控组件一样。你可以让你的组件接受一个onChange回调,然后用它来更新应用的真实源。
另一个注意事项:您通常应该使用getInitialState
而不是componentWillMount
;使用后者目前是允许的,但将来可能会被弃用。
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- ReactJs:this.setState的情况下不调用回调函数
- 如何绑定到这个,这样我就可以在这个coffeescript中正确地调用React中的setState
- 将函数中的对象分配给变量或调用 setState 没有这个
- 在循环中调用 setState 仅更新状态 1 次
- React- 在一个已经需要“this”的方法中调用this.setState
- 在安装或安装组件上的React抛出错误可能是由于对setState()的快速和频繁调用
- 我可以在renderComponent之后立即调用setState吗?
- 怎么变异这个.然后立即调用' setState ' break
- React.js:你用一个不可调用的回调调用了' setState '
- 只能更新已安装或正在安装的组件.这通常意味着在未挂载的组件上调用setState()
- 在this.setState()上没有调用render()
- 在React中调用this.props.children上的setState或其他方法是一个好习惯吗?
- setState()在不同的函数调用中