【问题标题】:this.state is always empty string on button clickthis.state 在按钮单击时始终为空字符串
【发布时间】:2022-11-11 12:45:55
【问题描述】:

以下总是在按钮单击时返回一个空字符串

class Login extends Component {
  constructor(props) {
    super(props);
    this.state = {
      emailAddress: ""
    };
  }
  loaddata = async () => {
    let jiraURL = "";
    let emailres = OTGWindowHelper.GetData();
    let _settingsRes = OfficeClass.GetLocalData("user-credentials");
    let userURLRes = Utils.getUserURL();
    let [userURL, emailData, _settings] = await Promise.all([userURLRes, emailres, _settingsRes]);
    .
    .
    .
    //here i am setting the emailAddress
    this.setState({emailAddress:emailData.EmailAddress})
   }
   componentDidMount() {
    this.loaddata();
   }
 validateURL = (event) => {
   let userEmailAddress = this.state.emailAddress; // here is always empty
// if i add console.log(this.state.emailAddress) i can clearly see the result
}
render (){
 return (
    <LoginFooter disabled={this.state.disableContinueButton} clicked={this.validateURL} />
 )
}

【问题讨论】:

  • 那么,你确定loaddata 函数成功了吗?
  • 请检查我的编辑

标签: reactjs state


【解决方案1】:

发生这种情况可能有几个原因:

  1. emailData.EmailAddress 为空
  2. 您在解决承诺之前设置状态。在这种情况下,您可能希望在设置状态之前添加一个空检查。例子:
    if (emailData.EmailAddress) {
        this.setState({emailAddress:emailData.EmailAddress})
    }
    

【讨论】:

    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多