将现有上下文传递给我的setContext react hookJS问题

问题描述

我当前的上下文以及用于设置更新上下文的方法如下:

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函数允许您像这样传递函数,因此实际上不需要更改我的代码即可,它已经可以工作