在 React 中导入 JSON 文件

2022-08-30 04:09:28

我是 React 的新手,我正在尝试从外部文件导入 JSON 变量。我收到以下错误:DATA

找不到模块 “./customData.json”

有人可以帮助我吗?如果我的变量在外部JSON文件中,但它不起作用。DATAindex.js

索引.js爱好.js个人资料.js customData.json
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import customData from './customData.json';
import Profile from './components/profile';
import Hobbies from './components/hobbies';

class App extends Component {
  render() {
    return (
      <div>
        <Profile name={this.props.profileData.name}imgUrl={this.props.profileData.imgURL} />
        <Hobbies hobbyList={this.props.profileData.hobbyList}/>
      </div>
    );
  }
}

ReactDOM.render(<App profileData={DATA}/>, document.querySelector('.container'));
import React, {Component} from 'react';

var Hobbies = React.createClass({
  render: function(){
    var hobbies = this.props.hobbyList.map(function(hobby, index){
        return (<li key={index}>{hobby}</li>);
    });
    return (
        <div>
            <h5>My hobbies:</h5>
            <ul>
                {hobbies}
            </ul>
        </div>
    );
  } 
});

export default Hobbies;
import React from 'react';

var Profile = React.createClass({
render: function(){
    return (
        <div>
            <h3>{this.props.name}</h3>
            <img src={this.props.imgUrl} />
        </div>
    )
  }
});

export default Profile
var DATA = {    
    name: 'John Smith',
    imgURL: 'http://lorempixel.com/100/100/',
    hobbyList: ['coding', 'writing', 'skiing']
}

export default DATA

答案 1

一种很好的方法(不添加假.js扩展,这是用于代码而不是数据和配置的)是使用模块。如果您曾经为项目搭建基架,则该模块已经包含在内,您只需要导入json:json-loadercreate-react-app

import Profile from './components/profile';

这个答案解释了更多。


答案 2

这个老栗子...

简而言之,您应该使用 require 并让 node 在 require 调用中处理解析,而不是将其外包给第三方模块。您还应该注意您的配置是防弹的,这意味着您应该仔细检查返回的数据。

但为了简洁起见,请考虑以下示例:

例如,假设我在应用的根目录中有一个配置文件“admins.json”,其中包含以下内容:

admins.json
[{
  "userName": "tech1337",
  "passSalted": "xxxxxxxxxxxx"
}]

请注意带引号的键, !"userName""passSalted"

我可以执行以下操作并轻松地从文件中获取数据。

let admins = require('~/app/admins.json');
console.log(admins[0].userName);

现在,数据位于其中,可以用作常规(或数组)对象。