将现有上下文传递给我的 setContext 反应挂钩(JS 问题)
pass existing context to my setContext react hook (JS question)
我的当前上下文和设置更新上下文的方法如下所示:
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 函数允许您像这样传递一个函数,所以实际上不需要更改我的代码就可以实现这一点,它已经可以工作了!
我的当前上下文和设置更新上下文的方法如下所示:
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 函数允许您像这样传递一个函数,所以实际上不需要更改我的代码就可以实现这一点,它已经可以工作了!