【问题标题】:Redux "pure" functionsRedux“纯”函数
【发布时间】:2021-05-08 02:05:32
【问题描述】:

我最近探索了 redux 并且很好奇 - 动作的有效负载字段是否让函数 'action-creator' 调用纯函数? 我的意思是我们可以在有效载荷中放入任何变量,甚至输入值等,但是由于规则减速器需要是纯函数,它不能绝对是pure - 它取决于“不纯”的动作。它是一种让事情变得更容易的协议或假设吗?还是“纯”规则不适合函数创建者?

PS:对不起,如果这是一个太愚蠢的问题。我还在学习????

【问题讨论】:

  • 该函数是否以相同的输入返回相同的输出并且不会产生副作用?
  • 协议是redux action应该是可序列化的。只是数据。没有什么能阻止你发送任何你想要的东西。但是尽量不要分发原生事件、流、promise 等,而只是分发普通的 javascript 对象。

标签: javascript reactjs redux


【解决方案1】:

在计算机编程中,纯函数是具有以下属性的函数:

  1. 对于相同的参数,它的返回值是相同的(局部静态变量、非局部变量、可变引用参数或来自 I/O 设备的输入流没有变化)。

  2. 它的评估没有副作用(局部静态变量、非局部变量、可变引用参数或 I/O 流没有突变)

https://en.m.wikipedia.org/wiki/Pure_function

这是一个纯函数

const sum = (a, b) => a + b

这不是一个纯函数,因为它依赖于其范围之外的值

const getWindowHeight = () => window.innerHeight

这也不是纯粹的,因为副作用 fetch 原因

const sendData = (url) => { fetch(url) return true }

关于 redux,您的动作创建者应该始终是纯粹的。 thunk 不太可能是纯粹的,因为它可能会产生副作用。 Reducers 在接收状态时总是纯粹的,创建一个新状态并返回它,不会改变现有状态。

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 2018-01-22
    • 2014-04-19
    • 2019-03-15
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多