Dan*_*ker 8 javascript reactjs
我对反应的使用和模式有一些疑问.
我应该用吗?
componentDidMount
Run Code Online (Sandbox Code Playgroud)
要么
getInitialState
Run Code Online (Sandbox Code Playgroud)
在异步加载数据?两者有什么区别?
我正在使用Backbone作为我的前端数据结构
this.props.data = new BrandModel({ _id: this.props.params.brandId });
var that = this;
this.props.data.fetch({
success: function () {
that.setState({ brand: that.props.brand });
}
});
return null;
Run Code Online (Sandbox Code Playgroud)
更新:感谢您的回复
这个问题建议我们不要使用componentWillMount,但据我所知,在这种情况下使用componentDidMount作为getInitialState更具表现力似乎意味着同步使用
更新2:
我不得不恢复使用getInitialState作为componentDidMount在渲染后触发,我需要this.props.data指向一个对象
componentDidMount
将组件安装到浏览器DOM后调用(它将在首次渲染后调用,如果您在渲染服务器端(到字符串)则不会调用它)
getInitialState
将在创建组件时调用,如果您使用的是es6类语法,则可以将该逻辑放在组件构造函数中直接指定给 this.state
在componentWillMount
服务器和客户端的首次渲染之前也会调用它 - 它更适合您的情况.
小智 1
我不确定这个 Backbone 的用法,但如果你加载数据就componentDidMount
很好了,因为本质上代码将在组件最初渲染后开始执行——在获取数据并再次设置状态后,组件将重新渲染显示当时的正确数据。这对我来说就像延迟加载。
我不确定是否getInitialState
阻塞,但如果是,则组件在加载状态之前不会呈现。但我认为事实并非如此,因此在渲染组件时可能无法获取数据。
componentWillMount
可能是您想要的,但请回顾一下React 生命周期,看看您认为最有意义的是什么。