【发布时间】:2020-09-21 13:32:09
【问题描述】:
import Axios from "axios";
import React, { createContext, useEffect, useReducer, useState } from "react";
import useAsync from "./useAsync";
const [datas, setDatas] = useState(null);
const fatchData = async () => {
try {
const response = await Axios.get(
"https://jsonplaceholder.typicode.com/users"
);
setDatas(response.data);
} catch (e) {
console.log(e);
}
};
useEffect(() => {
fatchData();
//eslint-disable-next-line
}, deps);
const AppReducer = (state, action) => {
switch (action.type) {
default:
return state;
}
};
export const GlobalContext = createContext(datas);
export const GlobalProvider = ({ children }) => {
const [state, dispatch] = useReducer(AppReducer, datas);
return (
<GlobalContext.Provider value={{ datas }}>
{children}
</GlobalContext.Provider>
);
};
这是错误。这可能是由于以下原因之一。
- 您可能错过了 React 和 Render 的版本(例如 React DOM) 您可能违反了 Hooks 规则 您可能在同一个应用中拥有多个 React 副本。
我想把接收到API的数据作为useReducer的默认值。但是有一个钩子错误。 您不能删除或修改使用 useContext 接收到的数据吗?
如果我使用 Graphql 而不是 restAPI,它会正常工作吗? 有没有使用 useContext 管理从服务器接收到的数据的好方法?
【问题讨论】:
标签: javascript reactjs react-hooks