路由切换后怎样可以使得组件能够重新调用componentDidMount?

来源:10-2 获取商户信息

qq_未完待续_15

2017-07-04

<Route path='/detail/:id' component={Detail}/>

componentDidMount() {
    // 获取商户信息
    this.getInfo()
}
getInfo() {
    const id = this.props.id
    const result = getInfoData(id)
    result.then(res => {
        return res.json()
    }).then(json => {
        this.setState({
            info: json
        })
    }).catch(ex => {
        if (__DEV__) {
            console.error('详情页,获取商户信息出错')
        }
    })
}

componentDidMount 是获取 ajax 数据用的,并且只触发一次。那请问课程里面的详情页这一点,路由上是 detail/:id ,那在 id 发生变化时,怎么重新触发 componentDidMount ,使得数据能够重新被获取到呢?

另外,老师我现在使用的是 react-router-dom 4.0 版本的,是不是 react-router 3.0会自动刷新?


写回答

1回答

双越

2017-07-04

你的问题跟 4.0 3.0 都没有关系,React 机制决定的。

DidMount 就是只在组件渲染之后被触发,路由的 id 变化后不会触发,而是会触发 didUpdate。视频中也是用 didUpdate 来做的更新。

0
1
qq_未完待续_15
非常感谢!
2017-07-05
共1条回复

React高级实战 打造大众点评Web App

已经对React Router4与Webpack2进行了项目升级

1711 学习 · 707 问题

查看课程