fetch获取本地json数据
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
学习react的时候,想要获取本地的json数据
目录结构:
想要的是获取到name.json
componentWillMount(){
fetch('./components/datas/name.json')
.then((res) => {return res.json(); })
.then((data) => {alert(JSON.stringify(data));this.setState({selV:JSON.stringify(data)});})
}
这段获取数据的代码是写在App.jsx组件中的,按照路径来说,看起来是没错的,但是运行起来之后就一直报错,404
后来百度之后一些论坛和博客上说,路径应该是以index.html文件所在的相对路径(我看自己的目录结构App.jsx和我的index.html就是平级的,那按照此说法我这样是可以获取的?)
后面想了一会,其实是很多的论坛说的不够清楚,这里的index应该是虚拟的index文件,不是指的我上面放出来的目录结构上 src–index.html。
因为我们在使用webpack对项目进行打包的时候,使用了html-webpack-plugin,当不指定contentBase的话dev-server的默认根目录是在webpack.config同一级的目录下,也就是说:这里生成的虚拟index.html是在根目录里面的,也就是和webpack.config.js这些配置文件是平级噢!
如果你手动指定了contentBase的话,再自己多检查一下路径吧!
接下来我在自己的项目中修改了一下路径就对了!
可以先这样试一下,看是不是可以(不论是否指定了contentBase,或者自己也很模糊虚拟index.html的位置,就按照下面的方法先试着获取文件内容吧,免得在项目里搞晕了 -.-||| )
fetch路径修改如下:亲测可以!
componentWillMount(){
fetch('./src/components/datas/name.json')
.then((res) => {return res.json(); })
.then((data) => {alert(JSON.stringify(data));this.setState({selV:JSON.stringify(data)});})
}
使用axios同样可以获取本地数据
_getFile = url => new Promise((resolve, reject) => {
axios({
method: 'get',
url,
responseType: 'blob',
crossOrigin: true,
withCredentials: true
// responseType: 'arraybuffer',
}).then((data) => {
// debugger
resolve(data.data);
}).catch((error) => {
reject(error);
});
})
url写文件路径即可以返回文件的blob
注:可以通过blob生成File对象~
var file = new File([blob],fileName);
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
7 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)