直接代码
创建context文件
import React from 'react';
interface context {
state: any,
dispatch: any,
}
const Context = React.createContext<context>(null)
export default Context
根组件hooks
import React, { useMemo, useReducer } from 'react';
import Context from '@/context/index'
const reduxData = {
name: '',
pwd: '',
lan: 'ch'
}
function changeRedux(state, data) {
const [key, val] = data
state[key] = val
return {
...state
}
}
export default function MyApp({ Component, pageProps }) {
const [state, dispatch] = useReducer(changeRedux, reduxData)
return (
<Context.Provider value={{
state,
dispatch
}}>
<Component {...pageProps} />
</Context.Provider>
)
}
使用(所有组件都可以用)
import React, { useContext } from 'react';
import Context from '@/context/index'
import { Button } from 'antd';
const detail = () => {
const { state, dispatch } = useContext(Context)
return (
<div>
<Button type="primary" onClick={() => {
dispatch(['name','zlaz'])
}}>改变名字</Button>
<div>name: {state.name}</div>
</div>
)
}
export default detail;
当点击按钮时 全局组件的状态的name更新为zlaz