reactjs - 在 React Context / Provider 中刷新 REST API
问题描述
我有一个 REST API,它为我的 React 应用程序中的多个页面提供我需要的数据集。因此,我设置了一个中心上下文。一切都在第一次加载时工作 - 我在页面之间移动并且上下文可用。
我的问题是我需要触发 REST API 以每 60 秒刷新一次数据,然后更新上下文并可供应用程序使用。
我试图遵循这一点,但我得到一个“错误:无效的钩子调用”。
这是我的代码的相关部分:
数据上下文.js
import React, { useState, createContext, useEffect, useContext } from 'react';
export const DataContext = createContext();
export const DataProvider = (props) => {
const [data, setData] = useState([])
const refreshData = async () => {
// axios REST API Call
setData(axiosresponse)
}
useEffect(() =>{
refreshData()
},[])
return(
<DataContext.Provider value={data}>
{props.children}
</DataContext.Provider>
);
}
export function DataContextRefresh() {
const context = useContext(DataContext);
return context;
}
数据.js
import React, { useState, useEffect, useContext } from 'react';
import { DataContext, DataContextRefresh } from '../contexts/DashboardContext'
export default function Dashboard() {
const data = useContext(DataContext)
const [dataRefresh, setDataRefresh] = useState(null);
useEffect(() => {
const datarefresh = setInterval(() => DataContextRefresh(), 60000);
setDataRefresh(datarefresh)
return () => {
clearInterval(datarefresh);
}
},[]);
return(
// elements using the data object
)
}
解决方案
推荐阅读
- arrays - 在 Swift 中创建 C 数组并将其指针传递给 C 函数(在 Swift 中)
- flutter - Flutter A RenderFlex 底部溢出 46 像素
- javascript - 如何在javascript中为对象动态添加属性?
- reactjs - 使用next js动态导入有条件导入模块,SSR不起作用
- bash - 如何从我的域列表中删除命令分隔符?
- gcloud - 有什么方法可以将 Google Cloud Tasks 的最长计划时间设置为 720 小时以上?
- xml - 解析通过 Get-GPResultantSetofPolicy 获得的 XML GPO 报告
- python - 创建一个打开文件并提取数据以制作字典的函数
- r - 将低于阈值的值分组到其他
- javascript - Expo google登录在独立应用程序中失败