122. 精读《robot 源码 - 有限状态机》


1 概述

本期精读的是有限状态机管理工具 robot 源码。

有限状态机是指有限个数的状态之间相互切换的数学模型,在业务与游戏开发中有限状态都很常见,包括发请求也是一种有限状态机的模型。

笔者将在简介中介绍这个库的使用方式,在精读中介绍实现原理,最后总结在业务中使用的价值。

2 简介

这个库的核心就是利用 createMachine 创建一个有限状态机:

import { createMachine, state, transition } from 'robot3';

const machine = createMachine({
inactive: state(
transition('toggle', 'active')
),
active: state(
transition('toggle', 'inactive')
)
});

export default machine;

如上图所示,我们创建了一个有限状态机 machine,包含了两种状态:inactive 与 active,并且可以通过 toggle 动作在两种状态间做切换。

与 React 结合则有 react-robot:

import { useMachine } from 'react-robot';
import React from 'react';
import machine from './machine'

function App() {
const [current, send] = useMachine(machine);

return (
<button type="button" onClick={ () => send('toggle')}>
State: { current.name}
</button>
)
}

通过 useMachine 拿到的 current.name 表示当前状态值,send 用来发送改变状态的指令。

至于为什么要用有限状态机管理工具,官方文档举了个例子 - 点击编辑后进入编辑态,点击保存后返回原始状态的例子:

640?wx_fmt=png

点击 Edit 按钮后,将进入下图的状态,点击 Save 后如果输入的内容校验通过保存后再回到初始状态:

640?wx_fmt=png

如果不用有限状态机,我们首先会创建两个变量存储是否处于编辑态,以及当前输入文本是什么:

let editMode = false;
let title = '';

如果再考虑和后端的交互,就会增加三个状态 - 保存中、校验、保存是否成功:

let editMode = false;
let title =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值