程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了即使使用扩展运算符 React.JS,SetState 也会覆盖之前的状态大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决即使使用扩展运算符 React.JS,SetState 也会覆盖之前的状态?

开发过程中遇到即使使用扩展运算符 React.JS,SetState 也会覆盖之前的状态的问题如何解决?下面主要结合日常开发的经验,给出你关于即使使用扩展运算符 React.JS,SetState 也会覆盖之前的状态的解决方法建议,希望对你解决即使使用扩展运算符 React.JS,SetState 也会覆盖之前的状态有所启发或帮助;

我的 setState 中的 handleChange 有问题。 因此,在点击 addList 后的代码中,会出现带有 divinputbutton,然后当我在 input 中输入时,input state 将更新单击添加按钮后,div 将消失。 所以我的问题是下次点击 addList 时,先前输入的值仍然存在并且 hIDeAddList handler 没有将 input 状态设置为空,并且当我输入新打开的 { {1}} 之前的 div 将覆盖。即使使用索引和扩展运算符,它仍然存在同样的问题。

该怎么办

input state

解决方法

状态已正确更改。你可以添加一个控制台日志来查看:

render() {
    console.log(this.statE);
    return (
    ...

它没有显示在您的屏幕上的原因是您为 ID 'add-button' 设置的 {display: 'none'} 。您的 var y = document.getElementById("add-button") 将只获取第一个元素,而不是整个元素列表。

仅供参,在您的案例的反应项目中使用 document.getElementById 不太正确。应该由国家来完成。这是一个完整的例子:

export class MyClass extends Component {
  constructor(props) {
    super(props);
    this.state = {
      input: [{title: ''}],showAnotherListBtn: true,showList: false,};
  }

  onClickAnotherListBtn = () => {
    this.setState({
      showAnotherListBtn: false,showList: true,});
  }

  addList = () => {
    this.setState({
      input: [...this.state.input,{title: ''}],});
  }

  handleChange(e,indeX) {
    const {name,value} = e.target;
    const list = [...this.state.input];
    list[index][name] = value;
    this.setState({input: list});
  }

  render() {
    console.log(this.statE);
    return (
      <div>
        {this.state.showAnotherListBtn ?
          <button id="btn-list" className="btn btn-default btn-list" type="submit" onClick={this.onClickAnotherListBtn}>Add Another
            List</button> : null}
        {this.state.showList && this.state.input.map((x,i) => {
          return (
            <div key={i} id="add-button" className="add-button">
              <input id="input" type="text" onChange={(E) => {
                this.handleChange(e,i)
              }} value={x.titlE} name="title" className="form-control add-input"/>
              <button className="btn btn-default btn-list-add" onClick={this.addList} type="submit">Add</button>
            </div>
          )
        })}
      </div>
    )
  }
}

export default MyClass

从上面的代码可以看出,您只需使用布尔状态来确定是否应该显示元素。

希望这有帮助;)

大佬总结

以上是大佬教程为你收集整理的即使使用扩展运算符 React.JS,SetState 也会覆盖之前的状态全部内容,希望文章能够帮你解决即使使用扩展运算符 React.JS,SetState 也会覆盖之前的状态所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: