为了账号安全,请及时绑定邮箱和手机立即绑定

componentDidMount()中的“未定义”错误

componentDidMount()中的“未定义”错误

幕布斯7119047 2019-04-18 13:15:30
我得到一个TypeError:这是未定义的,当我在componentDidMount方法中使用它时,即使我相信我绑定了该方法。我是否错误地绑定了方法或是否存在其他问题?我试图使用两个箭头函数并将其绑定在构造函数中,但我得到相同的错误。  constructor(...args) {    super(...args);    // this.handleSubmit = this.handleSubmit.bind(this);    this.state = {      email: null,      address: null,      address2: null,      city: null,      state: null,      zip: null,      subscribe: null,      currentUser: null,      displayName: null,      uid: null,    }    this.handleChange = this.handleChange.bind(this);    this.componentDidMount = this.componentDidMount.bind(this);    this.handleSubmit = this.handleSubmit.bind(this);  }  componentDidMount = () => {    firebaseRef.auth().onAuthStateChanged(function(user) {      if (user) {        [...]        })        this.setState({          uid: user.uid,          displayName: user.displayName});        db.collection("testCollection").doc("handleSubmitTest8").set({          // uid:this.state.uid,          test: "testy",        }).then(function() {          console.log("Document written in handleSumit in NUM");        })        .catch(function(error) {          console.error("Error adding document: ", error);        });      } else {        console.log("no user signed in");      }    });  }  handleSubmit = (event) => {    [...]  }  handleChange(event) {   [...]  }  render() {    return (...)}}```
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

我认为你做错了,因为你在componentDidMount(React的生命周期钩子方法)中使用了箭头函数。所以你不再需要这些代码

 this.componentDidMount = this.componentDidMount.bind(this); // remove this one

默认情况下,像ComponentDidMount这样的React的生命周期钩子已经具有此上下文。所以你需要将代码更改为此。

componentDidMount() {}

所以要明确你是否使用箭头功能不需要使用bind(this)


查看完整回答
反对 回复 2019-05-17
  • 2 回答
  • 0 关注
  • 1760 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信