语言:中文 | English
在 react 项目中,如果你只想通过行为来控制刷新等操作,那么这个简单的库就是很好的选择。
在 redux , zustand 和 mobx 等状态管理库中,我们总是需要编写各种状态和 action 来管理我们的应用;但是在我实际开发过程中,我发现大部分情况下我们并不需要这些库,我们使用这些库仅仅是因为它被大部分人使用;即便我们使用了,我们会把几乎所有的数据都保存到里面,导致我们的应用随着使用时间的增加,内存一直在增长,而大部分数据根本不需要保存到里面,因为每一次操作我们都是拿取最新的数据,然后替换掉之前的数据,而在组件外我们又不对数据进行删除,导致数据越来越多。
既然我们的应用大部分用不着状态管理,那么我怎样处理一个行为处理多页面刷新的问题呢,我想到了行为驱动模式,也就是通过行为去驱动,而不是状态,于是我开发了 react-actions 。
npm install @wutiange/react-actions
如果你使用的是 yarn ,那么:
yarn add @wutiange/react-actions
使用起来非常简单,首先定义好两个行为: useSubscribe
和 useAction
,它们分别的含义是订阅和触发,也就是在需要刷新的地方订阅,再其他地方触发。
export const { useSubscribe, useAction } = create();
在实际使用的过程中是可以创建多个的,你可以按业务进行创建。
如果你有一个页面进行数据修改,你希望跟这个数据相关联的数据刷新,那么你首先要做的就是在需要数据刷新的位置订阅,订阅很简单:
// 先进行导入
const subscribe = useSubscribe();
// 然后进行订阅
subscribe("text", setText);
其中 setText
就是要处理的行为;当另外页面触发的时候就会调用这个函数。
当订阅完成后,就可以在其他地方进行触发了。
// 先导入
const trigger = useAction((actions) => actions["text"]);
// 再进行触发
trigger("大家好,我是开发者吴敬悦");
通过把示例跑起来,自己操作测试一下看看效果。
cd example
yarn
yarn start
这样在浏览器中就能看到示例界面了。
我会在我们自己的项目中全面使用 react-actions
,看看其优缺点,同时把出现的问题进行修复;就目前来说没有问题。
欢迎各位看到的人尝试,如遇到问题欢迎 issue ,我会更正的。