首页 > 其他分享 >[react] 表单 受控组件 非受控组件

[react] 表单 受控组件 非受控组件

时间:2022-12-21 21:31:55浏览次数:49  
标签:受控 username 表单 react 组件 password event


文章目录

  • ​​收集表单数据​​
  • ​​1 理解​​
  • ​​2 应用​​
  • ​​3 非受控组件​​
  • ​​4 受控组件​​

收集表单数据

1 理解

包含表单的组件分类

  • 受控组件
  • 非受控组件

2 应用

需求:
定义一个包含表单的组件
输入用户名密码后, 点击登录提示输入信息

3 非受控组件

页面中所有输入类DOM的值,都是现用现取的

[react] 表单 受控组件 非受控组件_表单提交

// 创建组件
class Login extends React.Component {
handleSubmit = (event) => {
event.preventDefault() // 阻止表单提交
const {username, password} = this
alert(`您输入的用户名是 ${username.value},您输入的密码是:${password.value}`)
}
render() {
return (
<form action="https://www.baidu.com/" onSubmit={this.handleSubmit}>
用户名:<input ref={c => this.username = c} type="text" name="username" />
密码:<input ref={c => this.password = c} type="password" name="password" />
<button>登录</button>
</form>
)
}
}
// 渲染组件
ReactDOM.render(<Login />, document.getElementById('test'))

[react] 表单 受控组件 非受控组件_表单提交_02

4 受控组件

页面中输入类的DOM,随着输入的过程,将数据存储在状态state中,需要用的时候在从状态state中取(有点类似Vue中的双向数据绑定)

[react] 表单 受控组件 非受控组件_收集表单_03

// 创建组件
class Login extends React.Component {
// 初始化状态
state = {
username: '',
password: ''
}
// 保存用户名到状态中
saveUsername = (event) => {
this.setState({username: event.target.value})
}
// 保存密码到状态中
savePassword = (event) => {
this.setState({password: event.target.value})
}
// 表单提交的回调
handleSubmit = (event) => {
event.preventDefault()
const {username, password} = this.state
alert(`您输入的用户名是 ${username},您输入的密码是:${password}`)
}

render() {
return (
<form action="https://www.baidu.com/" onSubmit={this.handleSubmit}>
用户名:<input onChange={this.saveUsername} type="text" name="username" />
密码:<input onChange={this.savePassword} type="password" name="password" />
<button>登录</button>
</form>
)
}
}
// 渲染组件
ReactDOM.render(<Login />, document.getElementById('test'))

[react] 表单 受控组件 非受控组件_表单提交_04




参考:
​【React】面向组件编程 - 基本理解和使用 - 组件三大核心属性state-props-refs - 事件处理 - 非受控组件 - 受控组件 - 高阶函数 - 函数柯里化​​


标签:受控,username,表单,react,组件,password,event
From: https://blog.51cto.com/u_12881709/5960155

相关文章