1.0.4 • Published 4 years ago
redux-saga-simple-use v1.0.4
学习redux-saga 版本1.0.0, 和版本1.0.1是测试npm发布,没啥作用
版本1.0.2功能正常,暂时未测试
参(chao)考(xi)了dva的代码,把dva的router去掉了,省略了一部分功能,
只是为了和next.js redux-saga一起使用,减少redux-saga的模板代码。
model中的user.js:
// user store
const model = {
namespace: 'user',
state: {
user: null
},
reducers: {
updateState(state, { payload }) {
return {
...state,
...payload
};
}
},
effects: {
*getCity() {
yield console.log('aaa');
}
}
};
export default model;
model中的index.js:
import user from './user';
export default [user];
next.js _app.js
import NextHead from 'next/head';
import { Provider } from 'react-redux';
import withRedux from 'next-redux-wrapper';
import withReduxSaga from 'next-redux-saga';
import initStore from 'redux-saga-simple-use';
import models from '../models';
import '~css/app.less';
import * as Layouts from '~layout/Index';
const createStore = initStore(models);
const EmptyLayout = ({ children }) => <>{children}</>;
const AppPage = props => {
const { Component, pageProps, store } = props;
const Layout = Layouts[Component.$layout] || EmptyLayout;
return (
<Provider store={store}>
<NextHead>
<title>welcome</title>
<meta
key="viewport"
name="viewport"
content="width=device-width,height=device-height,initial-scale=1,user-scalable=no"
/>
<meta httpEquiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<link rel="shortcut icon" href="https://assets.smcdn.cn/from_qbox/favicon.ico" />
</NextHead>
<Layout>
<Component {...pageProps} />
</Layout>
</Provider>
);
};
export default withRedux(createStore)(withReduxSaga(AppPage));