当前位置: 首页 > 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.lryc.cn/news/594747.html

相关文章:

  • Component cannot be used as a JSX component
  • 芯谷科技--固定电压基准双运算放大器D4310
  • 杰和科技工业计算机AF208,打造高可靠新能源汽车检测产线
  • 杰发科技AC7840——硬件crc使用
  • 【烧脑算法】拓扑排序:从“依赖”到“序列”,理解题目中的先后逻辑
  • 5.6 framebuffer驱动
  • 录音转写:颠覆传统共享下载体验 | 如何提升团队效率?
  • 【前端状态更新与异步协调完全指南:React、Vue架构原理与复杂业务场景实战】
  • RustDesk自建服务器完整部署指南:从零开始到成功连接。成功解决rustdesk报错:未就绪,请检查网络连接
  • Vue 脚手架——render函数
  • 网络与信息安全有哪些岗位:(1)网络安全工程师
  • 【系统全面】Linux进程——基础知识介绍
  • 在本地WSL中的CentOS 7子系统中部署Ewomail邮件服务器
  • AC身份认证实验之AAA服务器
  • django filter按两个属性 去重
  • 第15次:商品搜索
  • 信息整合注意力IIA,通过双方向注意力机制重构空间位置信息,动态增强目标关键特征并抑制噪声
  • 来伊份养馋记社区零售 4.0 上海首店落沪:重构 “家门口” 的生活服务生态
  • 卷积神经网络中的注意力机制:CBAM详解与实践
  • Go-通俗易懂垃圾回收及运行过程
  • WPF——自定义ListBox
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(二)
  • 学习秒杀系统-异步下单(包含RabbitMQ基础知识)
  • ASP.NET Core Web API 中集成 DeveloperSharp.RabbitMQ
  • 关于校准 ARM 开发板时间的步骤和常见问题:我应该是RTC电池没电了才导致我设置了重启开发板又变回去2025年的时间
  • Android NDK ffmpeg 音视频开发实战
  • 什么是“差分“?
  • 包装类简单了解泛型
  • 图片转 PDF三个免费方法总结
  • 支持不限制大小,大文件分段批量上传功能(不受nginx /apache 上传大小限制)