组件道具更改时获取新数据

时间:2017-09-27 10:23:59

标签: reactjs

我有4个按钮,点击按钮后会调用一个组件,根据点击的按钮显示不同的数据。

第一次单击按钮时,会调用该组件的构造函数和componentWillMount()函数,但之后,在我刷新页面或导航到不同页面并返回之前,不会调用它。

那么,每次调用特定组件时,有没有办法调用组件的componentWillMount()函数或构造函数?

我没有附上代码,因为这个问题很简单。

2 个答案:

答案 0 :(得分:4)

看起来你正在为组件提供不同的道具,因此你需要与componentWillReceiveProps一起使用componentDidMount

根据文件

  

<强> componentWillReceiveProps(nextProps)

     在安装的组件之前调用

componentWillReceiveProps()   收到新的道具。如果您需要更新状态以响应   prop更改(例如,重置它),您可以比较this.props   和nextProps并使用this.setState()执行状态转换   在这种方法中。

     

<强> componentDidMount()

     在组件出现后立即调用

componentDidMount()   安装。需要DOM节点的初始化应该放在这里。如果你   需要从远程端点加载数据,这是一个好地方   实例化网络请求。

因此,您需要更新检查子组件componentWillReceiveProps中的道具是否已更改,并根据它进行操作。由于componentWillReceiveProps未在第一次安装组件时调用,因此您需要使用componentDidMount,因为它仅在第一次渲染时被调用

答案 1 :(得分:1)

不,因为documentation表示组件仅在页面生命周期中挂载一次。

我认为您可能需要使用componentWillUpdate事件。确保shouldComponentUpdate方法在需要时返回true。

相关问题