Retalk,最简单的 Redux 解决方案,可以更简单一点吗?
Retalk 3.0,现在 —— 像写 React 一样来写 Redux。
https://github.com/nanxiaobei/retalk
setStore()
、withStore()
、<Provider>
。yarn add retalk
或
npm install retalk
通常我们会在 app 内设置多个路由,一个路由对应一个 model,所以将会有多个 model。
像写一个 React 组件一样来写 model,只是没有了生命周期而已。
class CounterModel {
state = {
count: 0,
};
increment() {
// this.state -> 获取自身 model 的 state
// this.setState() -> 更新自身 model 的 state
// this.someAction() -> 调用自身 model 的 action
// this.models.someModel.state -> 获取其它 model 的 state
// this.models.someModel.someAction() -> 调用其它 model 的 action
const { count } = this.state;
this.setState({ count: count + 1 });
}
async incrementAsync() {
// 自动生成的 `someAsyncAction.loading` state 可供使用
await new Promise((resolve) => setTimeout(resolve, 1000));
this.increment();
}
}
使用 setStore()
来初始化所有 model 与其命名空间。
import { setStore } from 'retalk';
const store = setStore({
counter: CounterModel,
// 其它 model...
});
使用 withStore()
来连接 model 与组件。
import React from 'react';
import { withStore } from 'retalk';
const Counter = ({ count, increment, incrementAsync }) => (
<div>
<p>{count}</p>
<button onClick={increment}>+</button>
<button onClick={incrementAsync}>+ Async{incrementAsync.loading && '...'}</button>
</div>
);
const CounterWrapper = withStore('counter')(Counter);
使用 <Provider>
来将 store 提供给 app。
import ReactDOM from 'react-dom';
import { Provider } from 'retalk';
const App = () => (
<Provider store={store}>
<CounterWrapper />
</Provider>
);
ReactDOM.render(<App />, document.getElementById('root'));
https://codesandbox.io/s/retalk-5l9mqnzvx?fontsize=14
1. setStore()
2. withStore()
3. <Provider>
查看文档:https://github.com/nanxiaobei/retalk/blob/master/README.zh-CN.md#api
1. 异步引入 model ?
2. 自定义 state 与 action ?
3. 支持热更新?
查看文档:https://github.com/nanxiaobei/retalk/blob/master/README.zh-CN.md#faq
如果你已经使用过 Retalk 2.0,可根据文档升级到 3.0,一切都非常简单。^_^
最简单的 Redux 开发体验,欢迎尝试:
https://github.com/nanxiaobei/retalk
定不负所望~ ⚡️
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.