firebase ::无法读取null的属性'props'

时间:2016-09-07 09:28:35

标签: reactjs firebase firebase-realtime-database react-router

您好我正在尝试将react-router与firebase一起使用。但它给了我这个错误。

  

无法读取null

的属性'props'

这正是代码,我使用的是react-router

Down代码作为loginpanel组件在组件上。

else if (this.email.value === currentObject.username && this.password.value === currentObject.password && user_id)
 {
     var data25 = '';
     var groupid = '';

     var query = firebase.database().ref("/Users_group").orderByChild('id').equalTo(user_id);
     query.on("child_added", function hello (snapshot) {

         data25 = snapshot.val();

         groupid = data25.User_Group_id;

         AppActions.createComment(currentObject.username, currentObject.password, user_id, groupid);

//error is here,

         this.props.router.push('Index');
     },()=>{

     });

 }

我的反应路由器在main.jsx上声明 我的react-router看起来像这样。

       <Router history={hashHistory}>
      <Route path="/" component={Loginpanel}/>
      <Route path="Index" component={Index}/>
      <Route path="Form" component={Form} />
      <Route path="Checkindex" component={Index}/>
      <Route path="Signup" component={Signup}/>
      <Route path="Admin" component={Admin}/>
      <Route path="AdminEditDetails" component={AdminEditDetails}/>
      <Route path="AdminDetails" component={AdminDetails}/>

     </Router>,

1 个答案:

答案 0 :(得分:0)

在回调中,this指针不再指向您的React组件。有很多方法可以解决这个问题:

this捕获到另一个变量

var component = this;
query.on("child_added", function hello (snapshot) {
    ...
    component.props.router.push('Index');
});

明确绑定this

query.on("child_added", function hello (snapshot) {
    ...
    this.props.router.push('Index');
}).bind(this);

使用胖箭头,隐含地保留this

query.on("child_added", snapshot => {
    ...
    this.props.router.push('Index');
});

请注意,这是开发人员在JavaScript中遇到的一个非常常见的问题,我强烈建议您详细了解this使用回调的行为方式: