javascript - Reactjs关于函数内跳转 this.context.router.push(path)的问题
PHP中文网
PHP中文网 2017-07-05 11:04:52
0
3
1087

请教各位师兄了。
我创建了一个组件Component,并在内部中的一个ajax成功回调内,写了this.context.router.push("/user/list")类似的跳转功能。同时在组件外写了Component.contextTypes={ router: React.PropTypes.object.isRequired }。ajax也成功请求了,但是页面并没有跳转,有点疑问了。。。
代码结构类似:

class Component extends React.Component{
    ...
    success: function(data) {
        alert(data);
        this.context.router.push(...)
    }
}
Component.contextTypes={
    router: React.PropTypes.object.isRequired
}
PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
仅有的幸福

是不是拿不到this?. 试试用 success()->()

阿神

这里写一下在网上查找答案时遇到的坑,同时也是为了告诉后来遇到同样或者相似问题的小白吧,还请相关帖子管理人员别删:
在 Component.contextTypes这儿,我查到过有人把它以这种方式写到过组件内部:

class Component extends React.Component{
    [有些人写static有些人又不写static] contentTypes: {
        router: React.PropTypes.object.isRequired
    }
    ...
    this.context.router.push(...)
}

然而这么做我这儿始终出问题,就是报错 Cann't read the property 'push' is not defined。不太明显为啥呢,先记下来再说吧

曾经蜡笔没有小新

"Cann't read the property 'push' is not defined"
这个错误确保contextTypes写好了
并且构造函数调用super是没有把context弄丢

class Component {
  constructor(props, context) {
    super(...arguments) // 这样才行,如果只写props, 会把context 弄丢,所以super时始终建议这么写
  }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板