在setState中传递多个函数作为回调

4
我有一个 React 应用程序,在其中使用处理程序设置状态,以便为某些输入表单提供服务。
<div class="form-group has-danger">


 <label class="form-control-label" for="inputDanger1">Username</label>
  <input type="text" name="username" value={this.state.username} onChange={this.onChange} className={this.state.isUsernameCorrect ? "form-control is-valid" :"form-control is-invalid"} id="inputInvalid" />
  {this.state.isUsernameCorrect ? <div class="valid-feedback">Username is acceptable!</div> :
  <div class="invalid-feedback">Please enter a valid username</div> }
</div>

<div class="form-group has-danger">
  <label class="form-control-label" for="inputDanger1">Password</label>
  <input type="password" name="password" value={this.state.password} onChange={this.onChange} className={this.state.isUsernameCorrect ? "form-control is-valid" :"form-control is-invalid"} id="inputInvalid" />
  {this.state.isPasswordCorrect ? <div class="valid-feedback">password is acceptable!</div> :
  <div class="invalid-feedback">Please enter a valid password</div> }
</div>

使用相应的处理程序

onChange = (e) =>{
    const name = e.target.name;
    const value = e.target.value;
    this.setState(
      {[name] : value
      },

  () => this.usernameValidator(this.state.username),
  () => this.passwordValidator(this.state.password)


  );
 }

我想通过两个单独的函数传递用户名和密码,并验证它们是否符合正则表达式模式。此外,它可以控制显示消息的状态,以指示密码/用户名是否正确。
然而,我想执行这两个函数(或者更多函数,以添加更多表单数据),但是setState只接受一个回调函数?
1个回答

9

setState回调函数只接受一个函数,但在其中,您可以传递任意数量的函数。


this.setState({ [name] : value },
   () => {
      this.usernameValidator(this.state.username);
      this.passwordValidator(this.state.password);
   }
);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接