吉凯
吉凯
For typescript users, you can try to use [foca](https://github.com/foca-js/foca) which support `react 18` and type strong enough. Foca also based on redux + react-redux + immer
> I don't use typescript. Because I am fed up with it. And I don't read Chinese. And don't get how a programmer may write a documentation using another language...
actions在部分状态库中叫 reducers,叫法上后者比较贴切; effects确实提供了副作用的功能,比如 `setState`,比如 `loading`; 而watch特性应该会直接开一个watch属性; 至于普通的返回,其实更应该叫做`methods`,只不过effects也能返回数据,所以就合并在一起了。 这个问题我也想了挺久,也参考了其他库的规范,但是没有统一的定论。 命名这块,可谓仁者见仁。后期可能会修改的方案: - `actions` -> `reducers` - `effects` -> `methods`
```typescript const initialState = {...}; type State = typeof initialState; export const globalModel = defineModel('global', { initialState, effects: { patchUpdate(data: Partial) { this.setState(data); } } }); ``` `effects`里的setState支持部分数据更新,类似 React 的...
1. 看代码没有发现问题,可以看看控制台输出以及打印日志来排查。或者建一个最简单的repo方便我协助排查 2. #18
如果包含异步,收集将受阻。但是vue3的watchEffect做到了?
导入即可使用 ```typescript import { modelB } from './modelB'; export const modelA = defineModel('a', { effects: { foo() { this.state; modelB.state; }, } }); ```
> 是不是?store.getState()? `modelB.state === store.getState()[modelB.name]` 直接从store拿没有类型提示,而且不能用于 computed `计算属性`,不推荐这么用
> 老铁有兴趣集成limu 试试看呢?https://github.com/tnfe/limu ,一个专为高效操作不可变数据而生的小库(faster than immer),由于时间关系还一直未推 @fantasticsoul 试了一下,速度确实比immer快不少,接近原生浅复制了,体积也小,是个潜力股。不过foca当前的目标是仍然支持es5 `immer.enableES5()`,另外发现几个问题已经反馈到limu仓库了。所以limu离生产还有一定的距离。持续关注中...
> > > 先赞个楼,你最好画个思维导向图图,把你的理念阐述下。 > > > > > > @arcsin1 是个好主意,架构图已经加到readme了 > > 过了几个月回来,在持续关注,现在准备新项目直接使用你这个了。 感谢关注,有任何建议或者意见欢迎提交issue。争取做到最优 友情提示foca暂时不支持SSR,目前已经在README中体现,具体原因写在这里了:https://foca.js.org/#/troubleshooting?id=为什么不支持-ssr