当前位置: 首页 > 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.dtcms.com/a/290778.html

相关文章:

  • macbookpro m1 max本儿上速搭一个elasticsearch+kibana环境
  • Electron 主进程与渲染进程之间交互方式
  • Spring Boot自动装配原理深度解析:从核心注解到实现机制
  • Electron使用WebAssembly实现CRC-16 原理校验
  • YModem在Android上的实现(四)
  • 自动化测试概念和时机
  • Java -- 自定义异常--Wrapper类--String类
  • MySQL表的基础操作
  • 第三章自定义检视面板_创建自定义编辑器类_编扩展默认组件的显示面板(本章进度6/9)
  • 奥比中光深度相机开发
  • java学习day6 + leetcode31 下一个排列
  • 面向对象编程 - 高级篇一
  • 力扣面试150题--搜索二维矩阵
  • TPAMI 2025 | 空间频率调制(SFM),深度学习语义分割的细节守护者
  • uniapp 输入时动态修改值(如含单位)光标被强制移至末尾
  • vxe-table 通过配置 ajax 方式自动请求数据,适用于简单场景的列表
  • K8s 集群CoreDNS监控告警最佳实践
  • Django Ninja
  • 病历数智化3分钟:AI重构医院数据价值链
  • 【Prometheus+Grafana篇】监控通过Keepalived实现的MySQL HA高可用架构
  • 安全测试学习
  • Python并发编程:突破GIL枷锁,高效利用多核CPU
  • c# 获取指定路径盘的可用空间
  • 2025年一区SCI-回旋镖气动椭圆优化算法Boomerang Aerodynamic Ellipse-附Matlab免费代码
  • 大根堆,小根堆,双指针
  • ELN和LIMS的区别
  • 【LeetCode 热题 100】207. 课程表——DFS+三色标记
  • 原型设计模式
  • [Plecs基础知识系列] 基于Plecs的半导体热仿真方法(实战篇)_建立热路模型与仿真
  • 多能量CT扫描性能模体的详细讲解