React componentDidMount vs getInitialState

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指向一个对象

Bog*_*luk 9

componentDidMount 将组件安装到浏览器DOM后调用(它将在首次渲染后调用,如果您在渲染服务器端(到字符串)则不会调用它)

getInitialState 将在创建组件时调用,如果您使用的是es6类语法,则可以将该逻辑放在组件构造函数中直接指定给 this.state

componentWillMount服务器和客户端的首次渲染之前也会调用它 - 它更适合您的情况.


小智 1

我不确定这个 Backbone 的用法,但如果你加载数据就componentDidMount很好了,因为本质上代码将在组件最初渲染后开始执行——在获取数据并再次设置状态后,组件将重新渲染显示当时的正确数据。这对我来说就像延迟加载。

我不确定是否getInitialState阻塞,但如果是,则组件在加载状态之前不会呈现。但我认为事实并非如此,因此在渲染组件时可能无法获取数据。

componentWillMount可能是您想要的,但请回顾一下React 生命周期,看看您认为最有意义的是什么。