将现有上下文传递给我的 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 函数允许您像这样传递一个函数,所以实际上不需要更改我的代码就可以实现这一点,它已经可以工作了!