View on GitHub

tangdao

唐刀是一款基于 redux + redux-saga 以 model 为核心的数据流管理工具,它将 store 和 saga 统一为 model 的概念,写在一个 js 文件中,以对象配置的概念维护 state、 reducers、effects 等。

Dva 项目接入唐刀


注意事项

由于唐刀与 Dva 十分相似,并且唐刀尽可能提供了 Dva 大部分 api,但是并不能完美替代 Dva,以下功能唐刀并没有提供或者进行了一些修改

未提供的功能如下:

{
    onHmr // 被删除,不支持该可配属性
    onEffect // 修改为 effectHooks
    onReducer // 修改为 wrapReducer
    onAction // 修改为 extraMiddleware	
}
    import { Router, Route, routerRedux } from '@maoyan/tangdao';
    import { call } from '@maoyan/tangdao';
    import { loading } from '@maoyan/tangdao';

loading 的可配参数,详情请见 loading 插件


安装

npm install @maoyan/tangdao --sava

初步接入

将从 Dva 中引入的 api 替换为唐刀,在应用的创建流程上,唐刀提供了与 Dva 相同的 api 和流程。

以下面代码作为 Dva 接入案例

import dva from 'dva';
import createLoading from 'dva-loading';

const app = dva();

app.use(createLoading({ effects: true }));

app.model(model);

app.router(require('./router').default);

app.start('#app');

接入唐刀

import React from 'react';
import tangdao, {loading} from '@maoyan/tangdao';

// 1. Initialize
const app = tangdao();

// 2. Plugins
app.use(loading({ effects: true }));

// 3. Model
app.model(model);

// 4. Router
app.router(require('./router').default);

// 5. Start
app.start('#app');

然后将从 Dva 中引用的 api 全部改为唐刀引入。

至此,你已经完成了唐刀的初步对接,接入过程如果报错,请移步 迁移问题总结


action 相关

因为 Dva 不支持 action 管理,而唐刀支持 action 管理,这一部分根据项目规范并参考 核心概念/action 管理 自行改造


测试

对具体 model 的改造完成后,通过测试即可上线