反应native和firebase - firebase函数作为参考

时间:2017-02-19 19:33:33

标签: javascript firebase react-native firebase-realtime-database

有人可以解释为什么这段代码有效:

this.firebaseRef.on('value', (snapshot) => {//...});

而这不是:

const foo = this.firebaseRef.on;
foo('value', (snapshot) => {//...});

在react-native devtools调试器中,它会抛出一个错误:Cannot read property 'Y' of undefined

很有趣,因为当我设置一个断点并检查它时

foo === this.firebaseRef.on
它给了我真实的。 typeof foo是一个功能。我不明白。 once也是如此。

1 个答案:

答案 0 :(得分:2)

区别在于调用this时的on值。当函数作为对象的成员调用时,this绑定到对象。 (MDN)当函数值作为独立变量调用时,this在严格模式下绑定到全局对象或undefined。 (MDN

要解决此问题,您必须bind将该函数设置为正确的this值。

const foo = this.firebaseRef.on.bind(this.firebaseRef);
foo('value', (snapshot) => {
  // ...
});