当前位置: 首页 > news >正文

react class和function 如何模拟vue中的 双向绑定 监听 computed的方式

在 React 中,类组件函数组件 的写法有所不同。你提到的「双向绑定」、「监听」和「computed(计算属性)」这几个概念,原本来源于 Vue,但在 React 中我们也可以通过特定方式实现类似功能。

下面我将分别介绍:


🧱 1. 类组件中的双向绑定

在类组件中,要实现双向绑定(如表单输入),我们通常使用 stateonChange

import React from 'react';class MyForm extends React.Component {constructor(props) {super(props);this.state = {name: ''};}handleChange = (e) => {this.setState({ name: e.target.value });};render() {return (<div><input value={this.state.name} onChange={this.handleChange} /><p>你好,{this.state.name}</p></div>);}
}

⚛️ 2. 函数组件中的双向绑定

函数组件用 useState 实现双向绑定:

import React, { useState } from 'react';function MyForm() {const [name, setName] = useState('');return (<div><input value={name} onChange={(e) => setName(e.target.value)} /><p>你好,{name}</p></div>);
}

👂 3. 监听某个值的变化(Watch)

React 中没有 Vue 的 watch,但你可以使用 useEffect 模拟监听:

useEffect(() => {console.log("name 发生变化", name);
}, [name]); // name 改变就执行

类组件中想监听某个值,可以通过 componentDidUpdate 判断:

componentDidUpdate(prevProps, prevState) {if (prevState.name !== this.state.name) {console.log("name changed:", this.state.name);}
}

📐 4. computed(计算属性)替代方案

React 中没有 computed,但可以使用 getter 函数派生变量

// 类组件中
get greeting() {return `你好,${this.state.name}`;
}
// 函数组件中
const greeting = useMemo(() => {return `你好,${name}`;
}, [name]);

✅ 总结

功能类组件函数组件
双向绑定this.setState() + valueuseState() + onChange
监听值变化componentDidUpdateuseEffect([dep])
computed(计算)getter 或方法useMemo(() => ..., [deps])

http://www.xdnf.cn/news/1163161.html

相关文章:

  • 区块链之以太坊合约开发工具——Metamask钱包和Remix IDE
  • 架构设计衡量标准
  • 系统分析师-计算机系统-操作系统-存储器管理设备管理
  • 【每日算法】专题四_前缀和
  • 【算法基础】二分查找
  • 选择排序 冒泡排序
  • TPS61194PWPRQ1适用于汽车照明低 EMI、高性能 4 通道 LED 驱动器TPS61194
  • Java 二叉树
  • 【Java学习|黑马笔记|Day19】方法引用、异常(try...catch、自定义异常)及其练习
  • 洛谷 P1480 A/B Problem
  • Apache Ignite Binary Object 调优
  • Js进阶案例合集
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——1. 启航:你的第一个工业视觉应用
  • 原型设计模式
  • GaussDB alter table的用法
  • 有关Mysql数据库的总结
  • 45.sentinel自定义异常
  • QGIS、ArcMap、ArcGIS Pro中的书签功能、场景裁剪
  • Vue过度与动画效果
  • 如何用 Z.ai 生成PPT,一句话生成整套演示文档
  • 用 STM32 的 SYSTICK 定时器与端口复用重映射玩转嵌入式开发
  • 用Java 代码实现一个简单的负载均衡逻辑
  • redis 如何优雅地进行键设计?
  • 数据结构之克鲁斯卡尔算法
  • 编译支持cuda硬件加速的ffmpeg
  • Vue 3 响应式原理详细解读【一】—— Proxy 如何突破 defineProperty 的局限
  • BEVformer个人理解与解读
  • LLaMA-Factory 微调可配置的模型基本参数
  • ASP .NET Core 8高效集成Redis缓存实战
  • 相机标定(非ROS相机)