从子组件

时间:2017-01-31 17:04:54

标签: reactjs react-router

当我删除子组件中的项目时,我是否尝试重新获取父组件的componentDidMount生命周期?但似乎一旦在父路由的初始渲染时调用它,使用this.context.router.push将其路由回来不会再触发父路由中的componentDidMount。有人建议绕过这个吗?非常感谢。

export class Parent extends React.Component {
  componentDidMount () {
    this.props.fetchData(
      // update state
    )
  }
  render () {
    // render with updated data
  }
}

export class Child extends React.Component {
  constructor (props) {
    super(props)
    this.deleteItem = this.deleteItem.bind(this)
  }
  componentDidMount () {
    this.props.fetchData(
      // update state
    )
  }
  deleteItem () {
    this.props.deleteItem(id, (res) => {
      this.context.router.push('/parentroute')
    })
  }
  render () {
  }
}

1 个答案:

答案 0 :(得分:3)

componentDidMount仅在组件安装后调用一次。

如果要多次调用父组件方法,可以在父组件中使用componentWillReceiveProps

或者你可以使用子componentDidMountcomponentWillUnmount钩子,但最好在父母中处理它。