javascript - 在React中动态添加输入标签,显示一会儿然后消失

标签 javascript reactjs

我想做的是能够动态添加输入字段。 例如,一旦你满足了你的第一个爱好,你就会决定添加另一个爱好。单击“添加”,将显示一个新的输入字段。 输入字段瞬间显示然后消失。

代码:

class App extends React.Component {
  state = {
    Hobbies: []
  }

  addHobby = () => {
    this.setState(prevState => ({ Hobbies: [...prevState.Hobbies, ''] }))

  }

  handleChange(i, event) {
    let Hobbies = [...this.state.Hobbies];
    Hobbies[i] = event.target.value;
    this.setState({ Hobbies });
  }

  removeClick(i) {
    let Hobbies = [...this.state.Hobbies];
    Hobbies.splice(i, 1);
    this.setState({ Hobbies });
  }

  render() {
    const widthStyle = {
      width: '15rem'
    };



    return (
      <div className="App">
        <form >
          <label>
            Hobbies:
          <input type="text" name="hobby" />
          </label>
          <br /><br />

          {
            
            this.state.Hobbies.map((el, i) => {
              return (
                <div key={i}>
                  <input type="text" value={el || ''} onChange={this.handleChange.bind(this, i)} />
                  <input type='button' value='remove' onClick={this.removeClick.bind(this, i)} />
                </div>
              )
            })
          }

          <button onClick={this.addHobby.bind(this)}>ADD Hobby</button>
        </form>

       
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById('container'));

最佳答案

问题是您在表单内单击,这就是您的页面刷新(表单提交)并且丢失状态的原因

addHobby = (e) => {
  e.preventDefault() //<-----
  this.setState({ Hobbies: [...this.state.Hobbies, ''] })
}

CodeSandbox

关于javascript - 在React中动态添加输入标签,显示一会儿然后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54488255/

相关文章:

javascript - 如何从 JavaScript 中的子类调用父类的方法,以便可以访问父类的局部变量?

javascript - jQuery,无法存储$.get函数返回的数据

reactjs - 将React项目部署到github页面面临公共(public)文件夹中图像的问题

javascript - 使用 React 将轨道添加/删除到播放列表

reactjs - 在功能组件中声明没有 useState 的变量可以吗? react Hook

javascript - 干: Make all functions "return this"

javascript - 如何通过单击其中的按钮来删除父 iframe?

javascript - 自定义复选框仅对一项进行 react

javascript - Gatsbyjs 和内部链接

javascript - webpack:如何将所有 scss 文件捆绑到一个 main.css 文件中