当前位置: 首页 > 知识库问答 >
问题:

无法读取ReactJS(盖茨比)中未定义的属性“状态”[重复]

有翰海
2023-03-14

我有以下代码:

export default class Contact extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
        password: '',
        redirect: false,
        username: ''
      };

  this.onUsernameChange = this.onUsernameChange.bind(this);
  this.onPasswordChange = this.onPasswordChange.bind(this);
}

onUsernameChange(event) {
  this.setState({ username: event.target.value });
}

onPasswordChange(event) {
  this.setState({ password: event.target.value });
}

handleSubmit(event) { 
  event.preventDefault();
  alert('A name was submitted: ' + this.state.username);

  //sessionStorage.setItem('username', this.state.username);

}

render() {

  return (
      <div>
        <form className="form-signin" onSubmit={this.handleSubmit}>
          <input type="text" value={this.username} onChange={this.onUsernameChange} />
          <input type="password" value={this.password} onChange={this.onPasswordChange} />
          <input type="submit" value="Submit" />
        </form>
      </div>
  );
}
}

提交用户名和密码后:出现以下错误:

TypeError: Cannot read property 'state' of undefined

在以下行:

alert('A name was submitted: ' + this.state.username);

有什么问题?用户名不保存吗?(我用的是盖茨比)

共有3个答案

陶星辰
2023-03-14

我需要补充:

this.handleSubmit = this.handleSubmit.bind(this); 

在构造函数中!

赵俊晤
2023-03-14

您还可以对函数使用es6格式,这将防止每次在构造函数中为绑定此上下文编写额外代码。例如

onUsernameChange = event => {
  this.setState({ username: event.target.value });
}
子车飞鹏
2023-03-14

您还忘了绑定handleSubmit

做:

this.onUsernameChange = this.onUsernameChange.bind(this);
this.onPasswordChange = this.onPasswordChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);

在构造函数中

 类似资料:
  • 我可以在我的post模板中映射,没有麻烦,比如我想获得每个工具的名称: 我将这个数组传递给我的SEO组件,如下所示: 然后在我的SEO组件中,我可以访问那里的所有内容,这是我组件中的内脏,但map函数在这里不工作,我不知道为什么?

  • 我试图用ReactJS更新组件的状态,但得到以下错误。下面提供了错误和代码。 可能未处理的拒绝[1]类型错误:无法读取未定义的属性“setState”

  • 问题内容: 我正在通过教程学习reactjs并遇到此错误。那就是“无法读取未定义的属性’keys’”。我的代码非常少,因此我认为它与语言的结构有关。有谁知道这个问题和可能的解决方案? 问题答案: 编辑:奇怪的是,在我们上面的评论之后,我检查了一下它是否确实是babel核心版本,我在小提琴中使用了这个版本: 我在上面第二个切换到您的版本时得到以下信息: 使用not 并在括号中包裹多行html,如下所

  • 我是一个初学者,学习反应和还原。我写了这个关于如何在Redux中使用Connect.js的演示。搜索这类问题,但我的代码没有正确的答案。我得到了一个未定义的上下文。是错字吗?还是我以错误的方式传递了上下文?提前谢了。这是我的代码。 index.js /store/index.js Constants.js

  • 运行此代码时,在的第一行出现错误 TypeError:无法读取未定义的属性“array” 代码: 我试着搜索,但没有得到正确的解。

  • 问题内容: 运行此代码时,我在第一行出现错误 TypeError:无法读取未定义的属性“数组” 码: 我尝试搜索,但没有得到正确的解决方案。 问题答案: 道具类型现在是一个单独维护的库,名称为 这里是react- docs的解释:https : //reactjs.org/docs/typechecking-with- proptypes.html 您必须将它们导入为 NPM套餐