useContext中的useReducer未保存状态

问题描述

我正在尝试从数据库获取数据,如果获取成功,则使用useReducer,然后我希望将其作为状态返回,以便将其传递给组件。

我有console.log的req.data,它正在获取正确的数据,但是当我在化简器中返回值时,它并没有保存到状态。

状态应该是对象数组。

有人可以看到我在哪里错吗?

import React,{ createContext,useReducer,useEffect } from 'react'
import axios from 'axios'

export const OrganisationsContext = createContext()

export const OrganisationsContextProvider = ( { children }) => {
    const initState = []

    const organisationsReducer = (state,action) => {
        console.log(state)
        switch(action.type) {
            case 'FETCH_SUCCESS':
                return [...state,action.payload]
            case 'FETCH_ERROR':
                throw new Error(action.payload)
            default:
                return state
        }   
    }

    useEffect(() => {
        const initFetch = async () => {
            try {
                const req = await axios.get('/api/fetch_organisations')
                organisationsdispatch({action: 'FETCH_SUCCESS',payload: req.data})
            } catch (err) {
                organisationsdispatch({action: 'FETCH_ERROR',payload: err})
            }
        }
        initFetch()
    },[])

    const [organisations,organisationsdispatch] = useReducer(organisationsReducer,initState)

    return (
        <OrganisationsContext.Provider value={{organisations,organisationsdispatch}}>
            {children}
        </OrganisationsContext.Provider>
   

 )
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)