当前位置:首页 > React

react实现computed

2026-01-26 15:52:57React

在 React 中实现类似 Vue 的 computed 计算属性功能,可以通过以下几种方式实现:

使用自定义 Hook

创建一个自定义 Hook useComputed,依赖 useMemo 实现计算属性的缓存效果:

import { useMemo } from 'react';

function useComputed(getter, deps) {
  return useMemo(getter, deps);
}

// 使用示例
function Component() {
  const [count, setCount] = useState(0);
  const doubled = useComputed(() => count * 2, [count]);
}

基于 useEffect + useState

通过 useEffect 监听依赖项变化并更新计算值:

function useComputed(getter, deps) {
  const [value, setValue] = useState(getter());

  useEffect(() => {
    setValue(getter());
  }, deps);

  return value;
}

类组件实现

在类组件中可以通过 getter 属性实现计算逻辑:

class MyComponent extends React.Component {
  get computedValue() {
    return this.props.value * 2;
  }

  render() {
    return <div>{this.computedValue}</div>;
  }
}

第三方库

使用专门的计算属性库如 mobx

import { computed } from 'mobx';
import { observer } from 'mobx-react';

const store = observable({
  count: 1,
  get doubled() {
    return this.count * 2;
  }
});

const Component = observer(() => {
  return <div>{store.doubled}</div>;
});

性能优化建议

计算属性应避免在每次渲染时重新计算,确保正确声明依赖项数组。对于复杂计算,优先使用 useMemo 方案。

react实现computed

标签: reactcomputed
分享给朋友:

相关文章

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高 React Native 允许开发者使用 JavaScript 和 React 编写代码,同时生成 iOS 和 Android 应用,大幅减少开发成…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一致…