React - this.input.value vs handle change



什么更好?

我有一个包含 10 个输入的表单。

我应该使用this.input.value还是处理更改并将其存储在state中?

handleChange(e) {
    this.setState({input: e.target.value});
}
...
<input type="text" value={this.state.input} onChange={this.handleChange} />

onSubmit() {
    const inputValue = this.input.value;
    ...
}
...
<input type="text" ref={(input) => {this.input = input;}} />

从文档中:

何时使用引用

There are a few good use cases for refs:
    Managing focus, text selection, or media playback.
    Triggering imperative animations.
    Integrating with third-party DOM libraries.
Avoid using refs for anything that can be done declaratively.

设置受控输入有点痛苦,但我使用这种模式来简化它。

为所有输入创建一个 onChange 事件处理程序:

handleInputChange(e){
    const target = e.target;
    const value = target.type === 'checkbox' ? target.checked : target.value;
    const name = target.name;
    this.setState({
        [name]: value
    });
}

然后,对于你的输入,请务必为其提供一个与要更新的状态中的键匹配的name

render() {
    const { firstName, lastName, email, acceptTerms } = this.state;
    return (
        <form>
            <input name="firstName" onChange={this.handleInputChange} value={firstName} />
            <input name="lastName" onChange={this.handleInputChange} value={lastName} />
            <input name="email" onChange={this.handleInputChange} value={email} />
            <input type="checkbox" name="acceptTerms" onChange={this.handleInputChange} checked={acceptTerms} />
        </form>
    )
}

最新更新