<form>标记上的单个onChange侦听器

时间:2018-01-18 09:57:21

标签: reactjs

我只是用更通用的方式处理表单数据,并认为在包装表单标记上设置单个onChange侦听器应该适用于输入字段的所有更改。

事实上,确实如此 - 毫不奇怪。事件被调用,我知道通过检查event.target.name发生了什么变化并且可以相应地更新状态。完全符合预期。

然而,React似乎并不喜欢它并且使用众所周知的“你向表单字段提供value道具而没有onChange处理程序”控制台警告。

除了控制台警告之外,还有其他原因可以不这样做吗?它似乎消除了很多重复,否则React会受到批评。

class App extends Component {

    state = {
        name: 'Default Name',
        number: 12,
    }

    handleChange = (event) => {
        this.setState({
            [event.target.name]: event.target.value,
        })
    }

    render() {
        const { crashLogo } = this.props;

        return (
            <div className="App">
                <form onChange={this.handleChange}>
                    <input type="text" name="name" value={this.state.name} />
                    <input type="number" name="number" value={this.state.number} />
                </form>
            </div>
        );
    }
}

为了清楚起见:我不是要求其他解决方案,我知道我可以直接在每个输入上设置相同的更改侦听器,使用redux-form,拥有context魔法的自有包装组件等等...

0 个答案:

没有答案