- 受控组件:组件的值由React控制的组件,即组件的值由React的state控制的组件。
- 非受控组件:组件的值由DOM控制的组件,即组件的值由DOM的value控制的组件。
- 区别:受控组件的值始终由React的state控制,而非受控组件的值可以随时被用户修改。
- 受控组件的优点:
- 可以在组件的值改变时执行一些操作,如表单验证。
- 可以在组件的值改变时更新React的state,实现双向数据绑定。
我们看下面例子:
import React, { PureComponent } from 'react'
export class App extends PureComponent {
constructor() {
super()
this.state = {
username: "coderwhy"
}
}
inputChange(event) {
console.log("inputChange:", event.target.value)
this.setState({ username: event.target.value })
}
render() {
const { username } = this.state
return (
<div>
{/* 受控组件 */}
<input type="checkbox" value={username} onChange={e => this.inputChange(e)}/>
{/* 非受控组件 */}
<input type="text" />
<h2>username: {username}</h2>
</div>
)
}
}
export default App
在这个例子中,第一个input
是受控组件,它的值由React的state控制,当用户修改这个输入框的值时,会触发onChange
事件,从而更新React的state。第二个input
是非受控组件,它的值由DOM控制,不会触发onChange
事件,而是由用户修改。最后我们附上浏览器上的效果图:
感谢大家的支持,我们下次见
of course like your web site but you need to test the spelling on quite a few of your posts. A number of them are rife with spelling problems and I in finding it very troublesome to inform the reality nevertheless I will surely come again again.
新年快乐!
十天看一部剧,还可以吧
@梦不见的梦 行,谢谢提醒,我优化一下
网站的速度有待提升,每次打开都要转半天还进不来呢
@React实战爱彼迎项目(二) - 程序员鸡皮 哪里有问题了,报错了吗?
@Teacher Du 那是怕你们毕不了业,我大学那会儿给小礼品
我们大学那会,献血还给学分~
@ab 我想去学网安,比如网警,但分也贼高😕
@夜 加油,你一样也可以成为程序员的,需要学习资料可以V我