javascript - 控制条件警报,并在 ReactJS 中滚动到它

标签 javascript reactjs

我有一个条件警报消息,我想根据状态显示它,确定用户是否可以提交消息

{this.state.showAlert &&
<div class="alert alert-dismissible alert-warning">
  <button type="button" onClick={()=> this.setState({showAlert: false})} class="close" data-dismiss="alert">&times;</button>
  <h4 class="alert-heading">Warning!</h4>
  <p class="mb-0">Please fill in all the requested fields, before submitting a message.  <a class="alert-link">I will look at answer your message as quickly as possible. Thank you</a>.</p>
</div>
}

<div class="progress">
  <div class="progress-bar" role="progressbar" style={{width: '100%'}} aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div ref={el => { this.el = el; }} />
</div>

这里我渲染消息并制作一个 Jsx 元素向底部滚动

在我的处理程序中,我有条件检查

onSubmitHandler = () =>{
    if(this.state.isUsernameCorrect == false || this.state.isEmailCorrect == false){
        this.setState({
        showAlert: true
      })
       this.scrollToBottom('hello')

    }else{
      this.setState({
        showAlert: false
      })
    }
    console.log('submitted')
  }

我的问题是第一次警报设置不正确。我认为这是因为 setState 是异步的。

因此,当您第二次单击该按钮时,它会正确滚动。

我曾尝试使用回调来设置状态,但没有成功

onSubmitHandler = () =>{
    if(this.state.isUsernameCorrect == false || this.state.isEmailCorrect == false){
        this.setState({
        showAlert: true
      },  this.scrollToBottom('hello'))

最佳答案

我认为问题是我没有正确执行该函数,所以它只在第一次调用提交处理程序时被调用。

当然,这应该使用函数调用来完成。

onSubmitHandler = () =>{
if(this.state.isUsernameCorrect == false || this.state.isEmailCorrect == false){
    this.setState({
    showAlert: true
  }, () =>  
  this.scrollToBottom('hello'))

}else{
  this.setState({
    showAlert: false
  })
}
console.log('submitted')

我在 setState 中使用了回调参数,所以我确定在触发函数之前状态设置正确。

关于javascript - 控制条件警报,并在 ReactJS 中滚动到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53798209/

相关文章:

javascript - 使用组件作为 React 按钮

javascript mxins 使用 `Object.assign` ,评估早于预期

javascript - Gulp 没有覆盖目标文件

javascript - React : Using document. QuerySelector 作为库的一部分

javascript - 无法去除 webpack bundle js 文件中的注释

javascript - 未捕获的类型错误 : Cannot read property 'props' of undefined (reactjs) (very simpel)

reactjs - (FSEvents.framework) FSEventStreamStart : register_with_server: ERROR: f2d_register_rpc() => (null) (-22)

javascript - 使用上滑和下滑的点击事件打开 msg td

javascript - MongoDB 文档命名

javascript - jQuery IE8 不工作但是 IE7、IE6 和其他工作