当前位置: 首页 > 面试题库 >

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

韩晋
2023-03-14
问题内容

您好,我正在尝试将React-Router与Firebase配合使用。但这给了我这个错误。

无法读取null的属性“ props”

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

向下代码在组件上作为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');
     },()=>{

     });

 }

我的react路由器在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>,

问题答案:

在回调中,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回调方式的更多信息



 类似资料:
  • 我收到以下JavaScript错误: TypeError:无法读取null的属性“title” 代码如下: mds-iMac: cmscart imac$nodemo app[nodemo] 1.11.0[nodemo]随时重启,输入[nodemo]观看:.[nodemo]启动(node: 2274)DeprecationWarning:在猫鼬中被弃用 [nodemon]应用程序崩溃-正在等待文件

  • 我在我的Gatsby应用程序中得到了这个错误,该应用程序为作者提取places数据。当author.social的map()点为null时,该错误将显示 谢谢

  • 我知道有类似的线程讨论范围问题。 使用以下组件 当您单击时,您会得到的属性'setState' 我知道你可以像这样做,但所有这些看起来都很奇怪,只是为了让它工作。 什么被认为是最优雅的方式来做到这一点?当然,人们必须有一个首选的方式,除了眼睛疼痛之外,还有其他好处?

  • 我想在索引页的菜单部分显示我的产品。我试图从contentful API显示文本和图像等内容,但我得到了这个错误: TypeError:无法读取null的属性“fixed” src/components/homepageComponents/Product.js:6 3从“../../utils”导入{styles} 4从“gatsby-image”导入Img 5 6导出默认函数Product({

  • 问题内容: 我收到错误消息,文件中的重要部分在…我想知道,因为game.js在下面的目录中,所以找不到画布?我该怎么办? ./index.html: ./javascript/game.js: 问题答案: 我想问题是您的js在加载html之前运行。 如果使用的是jquery,则可以使用文档就绪函数包装代码: 或者只是将您的js放在 。

  • 我有个麻烦,我一点也不懂。该函数在我的服务器上工作,而在另一个服务器上不工作。这是我的密码: 错误是: (节点: 11288)UnhandledPromiseRejtionWarning: TypeError:无法读取属性'user'的null在Object.run(C:\用户\Alumetryu\桌面\bot\命令\info\serverinfo.js:20: 48)在客户端。(C:\用户\Al