我从我的TypeError: Cannot read property 'bind' of undefined
函数中获得了pushtofirebase
,尽管一切看起来都对我不对。非常感谢任何帮助。
以下是代码:
export default class RegisterView extends React.Component {
constructor(props) {
super(props);
this.pushToFirebase = this.pushToFirebase.bind(this);
}
onSubmit = values => {
var user = {
firstName: values.fname,
lastName: values.lname,
email: values.email,
password: values.password
}
firebase.auth().createUserWithEmailAndPassword(values.email, values.password)
.then(function () {
this.pushToFirebase(true);
})
.catch(function (error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode === 'auth/email-already-in-use') {
console.log(errorMessage);
}
this.pushToFirebase(false);
});
this.pushToFirebase = status => {
if (status) {
const ref = firebase.database().ref('users/').push(user);
console.log('im inside pushToFirebase');
console.log(ref.key);
this.props.setuserkey;
}
}
}
}
我还应该提一下,我是新手做出反应,经过3周的坚实反应,我仍然很新。
再次感谢大家抽出时间。
答案 0 :(得分:1)
您在pushToFirebase
内声明onSubmit
。应该是
export default class RegisterView extends React.Component {
// make it class property
pushToFirebase = status => {
if (status) {
const ref = firebase.database().ref('users/').push(user);
console.log('im inside pushToFirebase');
console.log(ref.key);
this.props.setuserkey;
}
}
onSubmit = values => {
var user = {
firstName: values.fname,
lastName: values.lname,
email: values.email,
password: values.password
}
firebase.auth().createUserWithEmailAndPassword(values.email, values.password)
.then( () => { // Use arrow function
this.pushToFirebase(true);
})
.catch( (error) => { // Use arrow function
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode === 'auth/email-already-in-use') {
console.log(errorMessage);
}
this.pushToFirebase(false);
});
}
}
此外,您不需要在构造函数中绑定箭头函数属性。
UPD 您还需要使用箭头功能替换function()
处理程序以捕获this.
答案 1 :(得分:0)
从函数定义中省略this
。而不是:
this.pushToFirebase = status => {
使用:
pushToFirebase = status => {
并将其移至您的班级而不是onSubmit函数。
此外,您不必在构造函数中绑定您的函数,因为您在此处使用箭头函数。
答案 2 :(得分:0)
TypeError:无法读取属性' bind'未定义的pushtofirebase
缺少pushtofirebase
的功能定义。
因此,没有与this
object关联的此属性的属性。它会导致此异常。
答案 3 :(得分:0)
将this.pushToFirebase = status => {
更改为pushToFirebase = status =>
,并将该功能移至onSubmit
功能之外。
由于这是一个箭头功能,你不必this.pushToFirebase = this.pushToFirebase.bind(this);
这行,你可以删除它
所以看起来应该像
export default class RegisterView extends React.Component {
constructor(props) {
super(props);
}
pushToFirebase = status => {
if (status) {
const ref = firebase.database().ref('users/').push(user);
console.log('im inside pushToFirebase');
console.log(ref.key);
this.props.setuserkey;
}
}
答案 4 :(得分:0)
试试这个
this.pushToFirebase (status) {
希望这对你有所帮助