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

大白话详细解读React框架的纯函数和高阶函数

1. 纯函数(Pure Function)

1.1 什么是纯函数?

纯函数是指一个函数,只要输入相同,输出就一定相同,而且不会产生任何副作用(比如修改外部变量、发起网络请求、操作 DOM 等)。

简单来说,纯函数就像一个“数学函数”,它只关心输入和输出,不会对外界造成任何影响。

1.2 纯函数的特点
  • 确定性:相同的输入,总是得到相同的输出。

  • 无副作用:不会修改外部的状态或变量。

1.3 纯函数的例子
// 纯函数
function add(a, b) {
  return a + b;
}

// 非纯函数
let counter = 0;
function increment() {
  counter++; // 修改了外部变量,有副作用
  return counter;
}
  • add 是纯函数,因为它只依赖输入 a 和 b,并且不会修改外部状态。

  • increment 是非纯函数,因为它修改了外部变量 counter

1.4 纯函数在 React 中的应用

在 React 中,纯函数常用于:

  • 组件:函数式组件应该是纯函数,只根据 props 和 state 返回 UI。

  • Reducer:Redux 或 useReducer 中的 reducer 必须是纯函数,因为它负责根据 state 和 action 返回新的 state

// 纯函数组件
function Greeting({ name }) {
  return <h1>Hello, {name}!</h1>;
}

2. 高阶函数(Higher-Order Function, HOF)

2.1 什么是高阶函数?

高阶函数是指一个函数,它接收一个或多个函数作为参数,或者返回一个函数。

简单来说,高阶函数就是“操作函数的函数”。

2.2 高阶函数的特点
  • 接收函数作为参数:比如 mapfilterreduce 等。

  • 返回一个函数:比如 React 的 HOC(高阶组件)。

2.3 高阶函数的例子
// 高阶函数:接收函数作为参数
function map(array, fn) {
  const result = [];
  for (let item of array) {
    result.push(fn(item));
  }
  return result;
}

// 高阶函数:返回一个函数
function createAdder(x) {
  return function(y) {
    return x + y;
  };
}

const add5 = createAdder(5);
console.log(add5(2)); // 输出 7
2.4 高阶函数在 React 中的应用

在 React 中,高阶函数常用于:

  • 高阶组件(HOC):接收一个组件,返回一个新的组件

  • 事件处理:返回一个函数来处理事件。

// 高阶组件(HOC)
function withLoading(Component) {
  return function({ isLoading, ...props }) {
    if (isLoading) {
      return <div>Loading...</div>;
    }
    return <Component {...props} />;
  };
}

// 使用高阶组件
const UserListWithLoading = withLoading(UserList);

3. 纯函数和高阶函数的区别

  • 纯函数:关注输入和输出,不产生副作用。

  • 高阶函数:关注函数的操作,可以接收或返回函数。

4. 纯函数和高阶函数在 React 中的结合

在 React 中,纯函数和高阶函数经常一起使用。比如:

  • 高阶组件:高阶组件本身是一个高阶函数,但它返回的组件应该是一个纯函数。

  • Redux 的 reducer:reducer 是纯函数,但它可以被高阶函数(比如 combineReducers)组合。

// 高阶组件 + 纯函数
function withLogger(Component) {
  return function(props) {
    console.log('Rendering:', Component.name);
    return <Component {...props} />;
  };
}

// 纯函数组件
function UserList({ users }) {
  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

// 使用高阶组件
const UserListWithLogger = withLogger(UserList);

5. 总结

  • 纯函数:输入相同,输出一定相同,没有副作用。常用于 React 组件和 reducer。

  • 高阶函数:接收或返回函数。常用于高阶组件和事件处理。

  • 结合使用:在 React 中,纯函数和高阶函数经常一起使用,比如高阶组件返回纯函数组件。

相关文章:

  • 京准电钟:NTP网络时间服务器让城市更智慧更精准
  • 快速入手-基于Django的Form和ModelForm操作(七)
  • C++ 介绍STL底层一些数据结构
  • 数据结构(排序(上)):冒泡、选择、插入
  • MySQL 创建用户,建库,建表
  • 红宝书第八讲:箭头函数与高阶函数:厨房工具与智能菜谱的对比
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例6,TableView15_06自定义导出文件名示例
  • ZYNQ的cache原理与一致性操作
  • 跟着StatQuest学知识06-CNN进行图像分类
  • 为容器指定固定IP地址
  • 06_数组
  • Android卷笔试题目总结
  • 大模型架构记录 【综述-文字版】
  • WPS排版如何一张纸显示四张纸的内容?
  • 解析DeepSeek的技术内核:混合专家架构如何重塑AI效能
  • 区块链交易所平台开发全解析
  • Systemd 是 Linux 系统的 ‌核心服务管理工具‌,负责管理系统的启动、服务生命周期和资源分配
  • 避雷 :C语言中 scanf() 函数的错误❌使用!!!
  • 高德终端技术总结:高可用架构如何练成?
  • 【MySQL】MySQL如何存储元数据?
  • 警方通报男子地铁上拍视频致乘客恐慌受伤:列车运行一度延误,已行拘
  • 兵韬志略|美2026国防预算未达1万亿,但仍寻求“暗度陈仓”
  • 巴基斯坦称回应挑衅,对印度发起军事行动
  • 上海发布首份直播电商行业自律公约,禁止虚假宣传、商业诋毁
  • 开局良好,我国第一季度广告业务收入保持较快增速
  • 华为鸿蒙电脑正式亮相,应用生态系统能否挑战Windows?