Closed nearxu closed 5 years ago
我们平常使用受控组件的时候,是自己维护一个value
状态和onChange
事件:
class App extends React.Component {
constructor (props) {
super(props)
// 状态
this.state = {
value: ''
}
}
// 事件
onChange = (e) => {
this.setState({value: e.target.value})
}
render () {
const { value } = this.state
return (
<input value={value} onChange={this.onChange}/>
)
}
}
而这里的实现方式是,value
和onChange
都由FormField
去维护,因为input
组件是作为children
传入,我们这里可以通过React.cloneElement
去修改children
的props
,即传入value
和onChange
,详细看这里。
这里有一篇文章详细说明了实现思路。
非常感谢,已经解决了,不过这个react.cloneElement 方法太隐蔽了
我自己的思路是input onChange事件做一个dispatch,通过reduce进行分发,可是这样就没有办法做到定制化,麻烦作者稍微讲讲思路,万分感谢。