笔记十五、React中的非受控组件和受控组件

15.1 非受控组件

  • 非受控组件

    • 由组件自身来管理其状态的组件

App.jsx 

import React, {Component} from 'react';

class App extends Component {

    handleSubmit = () => {
        alert(this.name.value)
    }

    // 由组件自身来管理其状态 input、checkbox 等,自己管理自己的值,这种组件成为非受控组件
    render() {
        return (
            <form onSubmit={this.handleSubmit}>
                <label>
                    名字:
                    <input type="text" ref={(a) => (this.name = a)}/>
                </label>
                <button type="submit">提交</button>
            </form>
        );
    }
}

export default App;

他自己维护了一个名叫name的参数值 

15.2 受控组件

组件内部维护state,state属性和表单元素的值建立依赖关系,再通过onChange事件与setState()结合更新state属性,就能达到控制用户输入过程中表单发生的操作,控制取值的表单输入元素就叫做受控组件(类似vue的数据双向绑定)

代码:手动实现只有 vue 中才有的双向数据绑定

App.jsx

import React, {Component} from 'react';

// 手动实现只有 vue 中才有的双向数据绑定
class App extends Component {

    state = {
        value: "Elenda"
    }

    handleSubmit = () => {
        alert(this.state.value)
    }

    handleChange = (e) => {
        console.log("handleChange -> ", e.target.value)
        this.setState({value: e.target.value})
    }

    // 手动实现只有 vue 中才有的双向数据绑定
    render() {
        return (
            <form onSubmit={this.handleSubmit}>
                <label>
                    名字:
                    <input type="text" value={this.state.value} onChange={this.handleChange}/>
                </label>
                <button type="submit">提交</button>
            </form>
        );
    }
}

export default App;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElendaLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值