由于微信小程序里页面在 onLoad 时才能拿到页面的路由参数,而页面 onLoad 前组件都已经 attached 了。因此页面的 componentWillMount 可能会与预期不太一致。例如:

    1. // 错误写法
    2. render () {
    3. // 在 willMount 之前无法拿到路由参数
    4. const abc = this.$router.params.abc
    5. return <Custom adc={abc} />
    6. }
    7. // 正确写法
    8. componentWillMount () {
    9. const abc = this.$router.params.abc
    10. this.setState({
    11. abc
    12. })
    13. }
    14. render () {
    15. // 增加一个兼容判断
    16. return this.state.abc && <Custom adc={abc} />
    17. }

    对于不需要等到页面 willMount 之后取路由参数的页面则没有任何影响。