首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react setState不工作(jsbin)

react setState不工作(jsbin)
EN

Stack Overflow用户
提问于 2017-01-20 05:55:20
回答 2查看 3.7K关注 0票数 1

我一直在挣扎于调试反应。在jsbin中,我不可能知道是什么错误,当我打开我的浏览器的控制台或控制台时,没有明确的指示我的错误是关于什么的。

http://jsbin.com/doletanole/1/edit?html,js,console,output

代码语言:javascript
复制
class HelloWorldComponent extends React.Component {
  constructor() {
    super()
    this.getInput = this.focusHandler.bind(this)
    this.state = {hasError:false}
  }
  focusHandler(e) {
    if(e.target.value === ''){
      this.setState({hasError:true})
    }
  }
  render() {
    return (      
      <input placeholder="username" type="text" onBlur={this.focusHandler}/>
{this.state.hasError ? <span>Username is required</span> :  ''}  
    );
  }
}

是否有更好的调试方式来响应?我只想显示错误消息,如果当用户离开输入基础的状态。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-20 06:11:08

每当绑定构造函数中的方法时,尝试使用相同的名称来避免此类错误,如果false不是空的,则需要将状态值重置为username,请尝试以下代码:

代码语言:javascript
复制
class HelloWorldComponent extends React.Component {
  constructor() {
    super()
    this.focusHandler = this.focusHandler.bind(this)
    this.state = {hasError:false}
  }
  focusHandler(e) {
    this.setState({hasError: e.target.value != '' ? false : true});
  }
  render() {
    return (    
      <div>  
         <input placeholder="username" type="text" onBlur={this.focusHandler}/>
         {this.state.hasError ? <span>Username is required</span> :  ''}  
      </div>
     );
  }
}

检查工作示例:http://jsbin.com/cozenariqo/1/edit?html,js,console,output

票数 1
EN

Stack Overflow用户

发布于 2017-01-20 06:02:21

首先,必须只从组件(或数组)返回一个顶层元素,但这并不常见)。将呈现的输出封装在一个元素中:

代码语言:javascript
复制
render() {
    return (
        <div>
            <input placeholder="username" type="text" onBlur={this.focusHandler}/>
            {this.state.hasError ? <span>Username is required</span> :  ''}  
        </div>
    );
}

其次,您没有正确地绑定focusHandler事件。将其更改为onBlur={this.focusHandler.bind(this)}。建议阅读:React、ES6、Autobinding和createClass()

阻止代码加载的错误来自包装元素。JS没有很好地向用户传播Babel错误。我建议不要使用它,而是与巴贝尔和Webpack一起建立一个当地的发展环境。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41756997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档