【问题标题】:How can I make the default value of an input changeable in ReactJS?如何在 ReactJS 中更改输入的默认值?
【发布时间】:2021-04-12 07:45:27
【问题描述】:

我是使用 React 的新手,所以这可能是一个我正在努力解决的简单问题。假设我有一个非常简单的类,它使用默认值呈现输入。我希望此输入具有我设置的值,但也能够更改它。但是,当它呈现时,输入字段充满了“hi”,我无法在其上写入或删除任何内容。我怎样才能做到这一点?

export class Hello extends React.Component {
render(){
    let i = "hi"
    return(
        <div>
            <input type="input" value={i} />
        </div>
    );
}

}

【问题讨论】:

    标签: javascript reactjs class input


    【解决方案1】:

    将输入值存储为组件状态的一部分,并在输入字段上监听 onchange 事件以更新组件的状态。

    export class Hello extends React.Component {
      state = {
        textbox: "hi",
      };
      render() {
        return(
            <div>
                <input
                  type="input"
                  value={this.state.textbox}
                  onChange={ev => this.setState({ textbox: ev.target.value })}
                />
            </div>
        );
      }
    }
    

    查看示例:https://reactjs.org/docs/forms.html#controlled-components

    【讨论】:

      【解决方案2】:

      您需要为此目的使用状态。看这里:https://reactjs.org/docs/forms.html#controlled-components

      【讨论】:

        【解决方案3】:

        我添加了一些不同的答案,这取决于您的组件是受控组件还是不受控组件,请参阅差异in docs

        您可以在其他答案或docs 中找到受控示例。

        不受控制的例子通常是在使用&lt;form/&gt; 元素时,在这种情况下你可以像related docs 中提到的那样添加defaulValue 属性。

        class NameForm extends React.Component {
          constructor(props) {
            super(props);
            this.handleSubmit = this.handleSubmit.bind(this);
            this.input = React.createRef();
          }
        
          handleSubmit(event) {
            alert('A name was submitted: ' + this.input.current.value);
            event.preventDefault();
          }
        
          render() {
            return (
              <form onSubmit={this.handleSubmit}>
                <input type="text" defaultValue="hi" ref={this.input} />
                <input type="submit" value="Submit" />
              </form>
            );
          }
        }
        

        【讨论】:

          猜你喜欢
          • 2020-09-22
          • 2020-01-24
          • 1970-01-01
          • 2015-11-02
          • 2018-07-26
          • 1970-01-01
          • 1970-01-01
          • 2014-06-03
          • 1970-01-01
          相关资源
          最近更新 更多