javascript - 在 React 中加载本地 JSON 文件以获取动态内容
问题描述
我试图找出访问本地 JSON 文件并将其存储在当前状态的最佳方法。我希望我走在正确的轨道上:)
项目.js
import React, { useState, useEffect } from "react";
import { useParams } from "react-router-dom";
// framer motion
import { motion } from "framer-motion";
const Project = (props) => {
const { projectID } = useParams();
const [project, setProject] = useState({});
useEffect(() => {
fetch('src/data/projects.json', {
headers: {
"Content-Type": "application/json",
"Accept": "application/json",
},
})
.then((res) => res.json())
.then((data) => console.log(data));
}, []);
return (
<motion.div exit={{ opacity: 0, transition: { duration: 1 } }}></motion.div>
);
};
export default Project;
文件
[
{
"title": "Example",
"id": "1",
"src": "example.png"
},
{
"title": "Example 2",
"id": "2",
"src": "example-2.png"
}
]
解决方案
这显然看起来您的相对路径不正确。
更新:从评论和交叉检查中可以清楚地看出,我们必须将我们的 json 文件移动到公共文件夹中才能正常工作。
所以你需要首先这样做并直接使用这个路径:
fetch('data/projects.json',
这是演示: https ://codesandbox.io/s/json-fanda-stydg ?file=/src/App.js
推荐阅读
- python - 类型错误:blit 的目标位置无效,Pygame
- javascript - 下拉列表填充未定义
- python - 根据置信度匹配两组对象的最佳方法
- reactjs - 在反应HashRouter中的哈希之前插入斜杠
- python - 在运行 python 脚本时监控网络流量
- mysql - 为什么我无法连接到 AWS RDS?
- selenium - 使用 Selenium ChromeDriver 时 Electron 无法访问用户数据目录
- reactjs - 一些值在第一次测试中未初始化
- azure-devops - Connect-AzAccount:术语“Connect-AzAccount”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
- selenium - 仅在渲染时获取数据url时访问数据图像url