我有4个按钮,点击按钮后会调用一个组件,根据点击的按钮显示不同的数据。
第一次单击按钮时,会调用该组件的构造函数和componentWillMount()
函数,但之后,在我刷新页面或导航到不同页面并返回之前,不会调用它。
那么,每次调用特定组件时,有没有办法调用组件的componentWillMount()
函数或构造函数?
我没有附上代码,因为这个问题很简单。
答案 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。