Mat*_* Mc 1 javascript facebook reactjs
我正在使用React来处理一些客户端组件.在某些情况下,组件不知道它们的初始状态,因此我需要一种方法来呈现组件并在外部为其提供初始状态.
renderComponent 有一个回调方法:
ReactComponent renderComponent(
ReactComponent component,
DOMElement container,
[function callback]
)
Run Code Online (Sandbox Code Playgroud)
显然:
如果提供了可选回调,则将在呈现或更新组件后执行该回调.
这很好,但如果我调用setState该回调,在组件重新渲染自身之前,您仍会看到初始(错误)渲染一瞬间.
所以我的问题是,我可以这样做:
var myComponent = React.renderComponent(...);
myComponent.setState({...});
Run Code Online (Sandbox Code Playgroud)
...安全?我可以假设renderComponent至少已经以同步的方式创建了组件的支持实例,那么有什么东西可以调用setState吗?
这个模式似乎在我的临时测试中使用localhost服务器,但我想知道这是否有点类似于使用JS修改DOM而不等待ol'文档就绪信号(即,容易出现不一致的行为) .
另一方面,我可以将默认状态对象作为prop传递,然后构建组件,以便检查该prop并在其中填充自己的状态componentWillMount或某些.这会更多地在The React Way的范围内吗?
另一方面,我可以将默认状态对象作为prop传递,然后构建组件,以便检查该prop,并在componentWillMount或其中填充自己的状态.这会更多地在The React Way的范围内吗?
是.应将状态视为组件的私有实例变量; 你永远不应该从组件外部访问它们,但正如将选项传递给对象构造函数一样,在props中指定组件初始状态的某些部分是有意义的.React的不受控制的组件(with defaultValue)就是这种模式的一个例子.
在可能的情况下,保持状态存储更高并防止它不同步通常更好,就像React的受控组件一样.您可以通过使组件采用onChange回调来执行此操作,然后使用该回调来更新应用程序的真实来源.
另一个注意事项:您通常应该使用getInitialState而不是componentWillMount; 目前允许使用后者,但将来可能会弃用.
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |