问题描述
我当前的上下文以及用于设置更新上下文的方法如下:
export const AppContextProvider = ({ children }) => {
const [currentAppContext,setCurrentAppContext] = useState(initApp)
const setAppContext = values => {
setCurrentAppContext(values)
}
return <AppContext.Provider value={{ appContext: currentAppContext,setAppContext }}>{children}</AppContext.Provider>
}
然后我在类似这样的组件中设置新的上下文:
export default function Settings() {
const { appContext,setAppContext } = useContext(AppContext)
const func = ({ accountId }) => {
setAppContext({
...appContext,accountId: accountId,})
},})
return <></>
}
但是我更愿意做 setAppContext((currentContext) => ({...currentContext,accountId: accountId}))
,就像我们在useReducer
钩子useReducer(state => state.item)
中所做的那样。如果可以的话,这怎么可能呢?
解决方法
从useState()
返回的set函数允许您像这样传递函数,因此实际上不需要更改我的代码即可,它已经可以工作!