-
模块定义
export default {
state: {
name: ''
},
reducers: {
setName(payload, currentState) {
const { name } = payload
return {...currentState, name}
}
},
effects: {
async getUser{payload, rootState, dispatch}) {
const { uId } = payload
const user = await fetch.get(`xxx?uid=${uId}`)
dispatch.user.setName({name: user.name})
}
},
};
-
模块注册
import createContainer, { bootstrap } from '@tencent/clean-state';
import user from 'user'
const modules = {user}
const setUp = bootstrap(modules);
const cState = createContainer(setUp.useHook);
export const { initialState } = setUp;
export const { Provider, useModule } = cState;
-
根节点引入
import Container, { initialState } from 'index.ts';
function MyApp({ Component, pageProps }: AppProps): React.ReactElement {
return <Container.Provider initialState={initialState}>
<Component {...pageProps} />
</Container.Provider>;
}
-
组件调用
import { useModule } from 'index.ts';
function Page() {
const [state: {user}, dispatch] = useModule()
const change = useCallback(()=> {
const payload = { name: 'test' }
dispatch.user.setName(payload)
}, [])
return <div>
<button onClick={change}>modify</button>
{user.name}
<div>
}