react-12-单向数据流-ref-双向绑定的实现

简介: 写了了这么久 ,其实有个在vue里面我们经常使用的东西,在react里面至今都没提,那就是vue里面的双向绑定,首先react里面是没有 双向绑定的,需要自己去实现接下来,就一起来玩下吧,更多的 react和其他框架的区别,请看最下方的官方对比链接

1. 前言


写了了这么久 ,其实有个在vue里面我们经常使用的东西,在react里面至今都没提,

那就是vue里面的双向绑定,首先react里面是没有 双向绑定的,需要自己去实现

接下来,就一起来玩下吧,更多的 react和其他框架的区别,请看最下方的官方对比链接


2.  需求 -  代码逻辑梳理


2.1 需求

X34L%VZP{K([)]LZNEDZ1L3.png


2.2 基础分析

  1. 使用类组件
  2. 标签显示输入框的内容
  3. 一个输入框
  4. 一个提交按钮  这个按钮不是必须的


3. 基础代码


inputvalue值 和 标签显示的值, state里面定义的值保持一致


class HelloMessage extends React.Component{
                state ={
                    message:"初始值"
                }
                // -----自定义函数
                changeHandle(){
                }
                render() {
                    console.log("render...");
                    let {message}= this.state;
                     return (
                        <div>
                            <h3>{message}</h3>
                            <input   type="text" 
                            onChange={}
                             value={message}/>
                             <button onClick={()=>{}}>提交</button>
                        </div>
                     );
                }
            }



4. 输入框逻辑


输入框输入值 界面跟随更改

也就是输入框绑定事件  onChange或者onInput事件,在事件中 修改  message的值

4.1 事件代码

基础的js 事件参数传值 获取事件对象


// -----自定义函数
                changeHandle(ev){
                    console.log(ev.target.value);
                    this.setState({
                        message:ev.target.value
                    })
                }


4.2 输入框代码


<input  ref="myMessage" type="text" 
                            onChange={this.changeHandle.bind(this)}
                             value={message}/>



5. 提交按钮


提交的时候需要获取到 输入框内容

获取DOMvue 类似 通过 ref属性

但是 使用的时候  this.refs  没有$


<input  ref="myMessage" type="text" 
                            onChange={this.changeHandle.bind(this)}
                             value={message}/>
<button onClick={()=>{
                                //  this.state.message 
                                // 注意没有$
                                // this.refs.myMessage DOM对象
                                // 和defaultValue一起用就不不需要 双向绑定了
                                 console.log(this.refs.myMessage.value);
                             }}>提交</button>



6. 简洁写法  ref


1.ref 绑定监听函数,默认参数就是当前的标签对象

2.也就是说el就是当前这个 input标签对象


<input  ref={el=>this.msgInput= el} 
               value={message } onChange={(event)=>{
                        this.setState({
                            message :this.msgInput.value
                        })
                    }}/>
<button  onClick={()=>{
                       console.log("获取 ref",this.msgInput.value);
                    }}> 提交</button>



7.  react 和 vue 简单对比


vue

v-model 是双向数据绑定

状态修改 ---> 界面

界面修改 --->  状态

react

没有双向绑定,只有单向数据传递

状态   --->  界面

界面  --->  状态     react没有实现,我们可以在inputonChange中通过修改inputvaule值,来修改状态




相关文章
|
8月前
|
前端开发 JavaScript API
第八章 react组件实例中三大属性之ref
第八章 react组件实例中三大属性之ref
|
4月前
|
前端开发 JavaScript
学习react基础(3)_setState、state、jsx、使用ref的几种形式
本文探讨了React中this.setState和this.state的区别,以及React的核心概念,包括核心库的使用、JSX语法、类与函数组件的区别、事件处理和ref的使用。
97 3
学习react基础(3)_setState、state、jsx、使用ref的几种形式
|
4月前
|
前端开发
react学习(17)回调形式的ref
react学习(17)回调形式的ref
|
4月前
|
存储 前端开发 容器
react学习(18)createRef形式的ref
react学习(18)createRef形式的ref
|
5月前
|
前端开发 知识图谱
[译] React 中的 "最新 Ref 模式"
[译] React 中的 "最新 Ref 模式"
|
6月前
|
JavaScript 前端开发
react18【系列实用教程】双向绑定表单 (2024最新版)含受控组件、非受控组件、单行多行输入框 input,下拉选择 select,单选 radio,多选 checkbox,标签 label
react18【系列实用教程】双向绑定表单 (2024最新版)含受控组件、非受控组件、单行多行输入框 input,下拉选择 select,单选 radio,多选 checkbox,标签 label
199 1
|
6月前
|
JavaScript
react18【系列实用教程】useRef —— 创建 ref 对象,获取 DOM (2024最新版)
react18【系列实用教程】useRef —— 创建 ref 对象,获取 DOM (2024最新版)
81 0
|
8月前
|
前端开发 JavaScript
深入了解 React 中的 Ref:不是魔法,是超级工具
深入了解 React 中的 Ref:不是魔法,是超级工具
231 0
|
8月前
|
JavaScript 前端开发 Java
React 中的 ref 和 refs:解锁更多可能性(下)
React 中的 ref 和 refs:解锁更多可能性(下)
React 中的 ref 和 refs:解锁更多可能性(下)
|
8月前
|
JavaScript 前端开发 测试技术
React 中的 ref 和 refs:解锁更多可能性(上)
React 中的 ref 和 refs:解锁更多可能性(上)
React 中的 ref 和 refs:解锁更多可能性(上)