美文网首页
纯函数用于状态管理

纯函数用于状态管理

作者: 来金德瑞 | 来源:发表于2019-08-27 15:48 被阅读0次

我们用一个足够简单的例子来演示,如何用 纯函数 做状态管理:

typealias State = Int

enum Event {
    case increase
    case decrease
}

func reduce(_ state: State, event: Event) -> State {
    switch event {
    case .increase:
        return state + 1
    case .decrease:
        return state - 1
    }


这个例子似乎过于简单,以至于我们看不出他有什么特别的。好吧,我承认他的主要目的是向大家演示,用 纯函数 做状态管理的基本单元是什么

首先,我们得有个状态:

typealias State = Int

然后,我们要有各种事件:

enum Event {
    case increase
    case decrease
}

最后,我们要有一个 纯函数 来管理我们的状态:

func reduce(_ state: State, event: Event) -> State {
    switch event {
    case .increase:
        return state + 1
    case .decrease:
        return state - 1
    }
}

这样,我们就可以做测试了,当 App 处于某个状态时,发生了某个事件,会产生一个结果,这个结果是否符合我们的预期:


func testReduce() {

    let state1 = reduce(0, event: .increase)
    state1 == 1 // 结果:true 😎

    let state2 = reduce(10, event: .decrease)
    state2 == 9 // 结果:true 😎
}

以上两个测试都是成功的。当然这里的状态管理过于简单。而真实应用程序的状态都是非常复杂的。并且程序的行为都是很难预测的。要解决这个问题,我们要感谢 纯函数,还记得他的特征吗?

1.没有附加作用,2.纯函数在参数相同时,返回值也一定相同。

我们再来看下 reduce 方法:

func reduce(_ state: State, event: Event) -> State { ... }

我们有没有获得一点点灵感...

...

...

...

...

...

... 经过 60 秒后

希望你已经获得答案了。

当程序处于某个特定状态时,发生了某个特定事件,会产生某个唯一的结果。这个结果与所处的环境无关,不论是处于应用程序运行环境,还是在测试环境。这个结果只和初始状态以及发生的事件有关。因此,程序的行为是可以被预测的,而且程序运行时的状态更新,可以在测试环境中被模拟出来。

相关文章

  • 纯函数用于状态管理

    我们用一个足够简单的例子来演示,如何用 纯函数 做状态管理: 这个例子似乎过于简单,以至于我们看不出他有什么特别的...

  • 1-Redux

    Redux [TOC] 知识点 状态管理器 state 对象 reducer 纯函数 store 对象 actio...

  • 使用 selector 从 SAP Spartacus stat

    选择器 selector 是用于获取存储状态 state 切片的纯函数。 @ngrx/store 提供了一些帮助函...

  • React 常见 hook

    React 创建组件的方式: 类组件 函数式组件a. 纯函数组件没有状态b. 纯函数组件没有生命周期c. 纯函数组...

  • 语法

    virtual 1.virtual声明的函数实现多态就是通用的多态实现 2.纯虚函数C++的纯虚函数用于表示一个类...

  • 关于组合函数compose的一些想法

    函数组合多用于纯函数,为什么?因为纯函数说白了就是入参固定,返回值固定的函数。可预测、可控制。如果不可控还有什么组...

  • 纯函数式状态(2)

    更为通用的状态行为数据类型我们写过的函数——unit、map、map2、flatMap和sequence都不是专门...

  • 纯函数式状态(1)

    想让状态更新恢复引用透明的关键是让状态更新是显示的。不要以副作用方式更新状态,而是连同生成值一起返回一个新的状态。...

  • RxSwift文档七(技巧)

    技巧 尽量构建为纯函数。这些纯函数可以轻松测试并且可用于修改操作符行为。 当使用Rx时,首先尝试使用内置运算符。 ...

  • 【web前端】一分钟带你搞懂 useState

    useState 是 React 中的一个 Hooks,它用于在函数组件中管理状态变量。 如何使用 导入 useS...

网友评论

      本文标题:纯函数用于状态管理

      本文链接:https://www.haomeiwen.com/subject/lepeectx.html