json - 在 React 中安装组件后使用 fetch 动态加载 JSON 文件?
问题描述
我在一个目录中有数百个小的 .json 文件,由于大小的原因,我无法一次将它们全部加载到内存中。因此,我想在组件安装后在 UI 中选择每个 .json 文件时单独加载它。所以我的问题很简单:有没有办法一次动态地导入这些 JSON 文件?
总结:
import '../myData/file1.json
...
import '../myData/file1000.json
行不通,因为我必须输入数百次,最终结果可能会太大。不过,我很想知道您是否可以递归地将文件目录导入 React 应用程序。
我希望有这样的解决方案:
fetch('../myData/${fileNumber}.json').then(() => ...
这将允许我指定我想要加载的确切文件,但从我所看到的情况来看,尚不清楚这是可能的。
解决方案
是的,您可以在 reactjs 中实现这一点。这在开发模式下有效。要使其在生产中工作,您可能需要更改 jsons 的路径。
请按照以下步骤操作:
1)在公共文件夹中创建一个文件夹myData:App/public/
2)把你所有的json文件放在那里
3)在您的组件中以这种方式使用它:
import React from 'react'
export default props => {
const [file, setFile] = React.useState(1)
React.useEffect(() => {
fetch('/myData/' + file + '.json', {mode: 'no-cors'})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error))
},[file])
return (
<div>
<div onClick={() => setFile(1)}>file 1</div>
<div onClick={() => setFile(2)}>file 2</div>
<div onClick={() => setFile(3)}>file 3</div>
</div>
)
}
推荐阅读
- vue.js - 某些产品的 PDP 页面被重定向到 404
- dart - flutter - 当窗口小部件重新出现在视口中时调用 State 的方法
- r - 在将 R 数据帧传输到 Spark 数据帧时,日期列转换为 dbl 格式
- kubernetes - 在谷歌云中远程创建 NFS 目录
- php - 在 PHP 中将日期添加到今天作为英国日期
- javascript - 如何在每个循环内的 onclick 中使用 window.open
- node.js - 在 Rancher 中配置 Node.JS 容器
- javascript - 日期时间选择器和颜色选择器不适用于动态创建
- c# - 是否可以在 Windows 的同一台机器上同时运行 FTP 代理服务器和 FTP 服务器?
- ios - 保存带有动画 gif 的图像