每次我在输入中输入内容时都会调用 setState

珍妮莉萨珍

所以我面临一个问题,每当我在输入中写一些东西时,handleCommentAdded 被调用,它调用 setState,重新渲染所有东西。这使得在输入中输入或输入的所有内容都显示为评论,我希望在单击提交时输入中的内容显示为评论。我怎样才能解决这个问题?

 class WriteComments extends React.Component {
      constructor(props) {
         super(props);
         this.state = {
         commentAdded:"",
       }
      this.handleButton = this.handleButton.bind(this);
      this.handleCommentAdded = this.handleCommentAdded.bind(this);
  }

  handleCommentAdded(event) {
    this.setState({newComment: event.target.value});
  }

  handleButton() {
    return(
       <div>
       {comment}
       </div>
   )
 }


render() {
  return(
<div>
 <input type="text" value={this.state.commentAdded} onChange=  
   {this.handleCommentAdded}/>

 <div className="button">
    <button
        type="button"
        onClick={e => this.handleButton(e)}
     >
     Write
    </button>
  </div>

) } }

阿维纳什·马拉瓦特

错误正在调用handleCommentAdded中的onChange
设置状态handleButton

class WriteComments extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      commentAdded: ""
    };
    this.inputRef = React.createRef();
    this.handleButton = this.handleButton.bind(this);
  }

  handleButton() {
    this.setState({ commentAdded: this.inputRef.current.value });
  }

  render() {
    return (
      <div>
        <input type="text" ref={this.inputRef} />

        <div className="button">
          {this.state.commentAdded !== "" ? (
            <div>{this.state.commentAdded}</div>
          ) : (
            <button type="button" onClick={e => this.handleButton(e)}>
              Write
            </button>
          )}
        </div>
      </div>
    );
  }
}



ReactDOM.render(<WriteComments />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id='root' />

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

输入onChange时重音并延迟React的setState

来自分类Dev

setState不被调用

来自分类Dev

setState 被调用太晚了

来自分类Dev

调用setState时关闭键盘

来自分类Dev

$ .get中的setState

来自分类Dev

forEachLoop中的本机setState

来自分类Dev

useLayoutEffect中的setState

来自分类Dev

ReactJS中的setState

来自分类Dev

Reactjs 中的 setState 实现

来自分类Dev

每次调用this.setState()时停止渲染ReactJS吗?

来自分类Dev

在回调中调用setState到setState是否可以接受?

来自分类Dev

反应setState不设置输入字段的状态

来自分类Dev

setState仅在使用对象作为状态时设置最后输入

来自分类Dev

可能的竞赛条件调用setState

来自分类Dev

React SetState不调用渲染

来自分类Dev

什么时候调用setState()?

来自分类Dev

React:在调用 this.setState() 后不会调用组件的 render()

来自分类Dev

每次我开始在Chrome中输入网址时,都会提示输入错误的网址

来自分类Dev

FutureBuilder,SetState:删除setState时变量未更新

来自分类Dev

在反应中调用 this.setState({ term: ' ' }) 后,输入值不会被重新渲染

来自分类Dev

handleSubmit 函数中的 this.setState 不重置表单输入

来自分类Dev

酶不能反映异步setState回调中的setState变化

来自分类Dev

嵌套数组中的setState

来自分类Dev

如何使setState在使用中工作

来自分类Dev

react的map函数中的setState

来自分类Dev

渲染函数中的 setState() 返回?

来自分类Dev

NGXS 在 setState 中传播状态

来自分类Dev

在iframe中输入内容时如何显示输入?

来自分类Dev

我有BottomNavigatorBar时无法使用setState