IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react中的双向绑定 -> 正文阅读

[JavaScript知识库]react中的双向绑定

前言:因为项目原因需要学习另一个超级火的框架react, 因为之前一直使用vue进行开发,所以在学习react中会不自觉的代入一些vue中的概念来理解react中的实现,下面就通过对比学习的方式记录下react中的知识。

在react中其实是没有双向绑定的概念,每次更新页面和值都需要我们自己去调用指定的api来触发,而在vue中只需要使用v-model指令就可以完全实现,在vue中的指令其实也是使用了几个事件的语法糖来实现,所以下面就去看下react中的“双向绑定”是怎么来实现的。

如果实现react中得双向绑定,首先要理解state这个属性,简单来说react中得state就是一个对象,它用来缓存和维护当前组件中所使用到得状态,可以理解为vue中data中定义得值,如:

import React, { Component } from 'react'
export default class Class extends Component {
  constructor(props) {
    super(props)
    this.state = {name: '', age: ''}
  }
  render() {
    return (
      <div>
        <form onSubmit={handleSubmit}>
        </form>
      </div>
    )
  }
}

而在函数式组件中,使用hooks可以将这个统一的state值根据功能和场景拆分为多个state用来更加方便的使用和维护,如:

import React, { useState } from 'react'
export default function ModelChange() {
  const [name, setName] = useState('')
  const [age, setAge] = useState()
  const handleSubmit = () => {
  }
  return (
    <div>
      <form onSubmit={handleSubmit}>
      </form>
    </div>
  )
}

需要注意的是,如果需要改变维护的状态的值,需要使用指定的方法才会使页面更新,如函数式组件中定义的setName方法等。下面就看看react在input输入框中实现双向绑定,代码如下:

import React, { useState } from 'react'

export default function ModelChange() {
  const [name, setName] = useState('')
  const handleCnhange = e => {
    const data = e.target.value
    setName(data)
  }
  return (
    <div>
      <form>
        <label>
          名字:
          <input type="text" value={name} onChange={handleCnhange} />
        </label>
      </form>
    </div>
  )
}

上面的代码通过useState定义了值name,然后通过input标签的value将name展示出来,通过监听change事件获取输入的值并调用定义好的方法setName修改name的值并更新页面,又使页面展示为新输入的值,通过这个流程的操作就实现了在react中的双向绑定。如果我们想要修改和获取多个输入的值可以使用name属性来实现,代码如下:

import React, { useState } from 'react'

export default function ModelChange() {
  const [data, setData] = useState({
    name: '', age: ''
  })
  const handleCnhange = e => {
    const {value, name} = e.target
    setData(preData => {
      return {
        ...preData,
        [name]: value
      }
    })
  }
  const handleSubmit = (e) => {
    console.log(data)
  }
  return (
    <div>
      <form>
        <label>
          名字:
          <input type="text" name="name" value={data.name} onChange={handleCnhange} />
        </label>
        <label>
          年龄:
          <input type="text" name="age" value={data.age} onChange={handleCnhange} />
        </label>
        <input type="button" value="提交" onClick={handleSubmit} />
      </form>
    </div>
  )
}

上面代码将name和age字段声明在了一个集合中(根据业务和使用场景也可以进行拆分定义),通过给input标签添加name属性来更给指定属性更新当前输入的值,效果如下:
在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:20:01  更:2022-03-08 22:22:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:16:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码