美文网首页React
React 实现双向绑定

React 实现双向绑定

作者: Lia代码猪崽 | 来源:发表于2019-08-08 11:22 被阅读1次

何为双向绑定?其实就是改变model层能自动改变view层,view层改变model层也能自动改变。
React已经实现了改变model层能自动改变view层,所以我们要做的就是改变view层能自动改变model层。

React当中,有个onChange属性,可以给input绑定事件,当input框里的值发生变化时会触发调用方法。

初始页面
改变input的值,上面的显示文字也会变
点击按钮,input与上面的显示文字都改变了

一、通过事件对象获取值

event.target.value可以获取到input框的值。

具体实现步骤可拆分为:
1.给input定义value属性,值为statemsg,即value={this.state.msg},是为了保证初始页面时,两值相等。
2.给input定义onChange属性,值为当前React组件里的方法inputChange,即onChange={this.inputChange}
3.inputChange方法中通过event.target.value方法获取到当前input的值,并赋值给statemsg

import React, {Component} from 'react'
import '../assets/css/index.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            msg: '我是一个Test组件'
        }
    }

    inputChange = (event) => {
        this.setState({
            msg: event.target.value
        })
    }
    render() {
        return (
            <div>
                <h2>input框的值是:{this.state.msg}</h2>
                <input onChange={this.inputChange} value={this.state.msg}/>
            </div>
        )
    }
}

二、通过ref来获取

ref可以获取到当前元素的DOM节点。

具体实现步骤可拆分为:
1.给input定义value属性,值为statemsg,即value={this.state.msg},是为了保证初始页面时,两值相等。
2.给input定义ref属性,即ref="msgInput"
3.inputChange方法中通过this.refs.msgInput获取到当前input的DOM节点,并赋值给statemsg

import React, {Component} from 'react'
import '../assets/css/index.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            msg: '我是一个Test组件'
        }
    }

    inputChange = () => {
        this.setState({
            msg: this.refs['msgInput'].value
        })
    }
    changeMSG = () => {
        this.setState({
            msg: '1233211234567'
        })
    }
    render() {
        return (
            <div>
                <h2>input框的值是:{this.state.msg}</h2>
                <input ref="msgInput" onChange={this.inputChange} value={this.state.msg}/>
                <button onClick={this.changeMSG}>值为1233211234567</button>
            </div>
        )
    }
}

相关文章

  • Vue.js数据双向绑定实现

    目前的几种主流前端框架中,react是单向绑定,而angular.js和vue.js是双向绑定,实现双向绑定的方法...

  • react实现双向绑定

    import React from 'react';export default class APP extend...

  • React 实现双向绑定

    何为双向绑定?其实就是改变model层能自动改变view层,view层改变model层也能自动改变。React已经...

  • antd表单组件的双向绑定

    react没有v-model这种双向绑定指令。所以要想实现双向绑定,就需要给输入框一个默认的value,并且通过c...

  • 单项数据流与双向数据绑定

    单向绑定 vs 双向绑定 单双向绑定,指的是View层和Model层之间的映射关系。 react采取单向绑定,如图...

  • angular双向绑定

    MVVM的核心机制就是双向绑定。React、Vue、Angular的双向绑定,都是基于MVVM的设计模式。 双向绑...

  • 简单实现react双向绑定

    在看Vue.js文档的时候,看到深入响应式原理这一节时,顺便想了想如何模仿Vue.js的双向绑定原理来实现reac...

  • react实现数据双向绑定

    react实现数据双向绑定要比vue麻烦了一点,需要手动进行数据更新。 以一个input为例,绑定一个state值...

  • 美团面试总结

    1.angularJS双向绑定实现2.双向绑定的其他实现3.使用get,set实现双向数据绑定4.三列布局实现的三...

  • 深入Vue响应式原理

    1.Vue的双向数据绑定 参考 vue的双向绑定原理及实现Vue双向绑定的实现原理Object.definepro...

网友评论

    本文标题:React 实现双向绑定

    本文链接:https://www.haomeiwen.com/subject/yomtjctx.html