Importer le fichier JSON dans React

je suis nouveau pour réagir et j'essaie d'importer un JSON DATA variable à partir d'un fichier externe. J'obtiens l'erreur suivante:

impossible de trouver module"./ customData.json"

Peut-on m'aider? Il fonctionne si j'ai mon DATA variable index.js mais pas quand c'est dans un fichier JSON externe.

index.js
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'));
hobby.js
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;
profil.js
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
customData.json
var DATA = {    
    name: 'John Smith',
    imgURL: 'http://lorempixel.com/100/100/',
    hobbyList: ['coding', 'writing', 'skiing']
}

export default DATA
18
demandé sur Mowzer 2016-09-25 13:52:18

5 réponses

Une belle façon (sans l'ajout d'un faux .js extension qui est pour le code pas pour les données et configurations) est d'utiliser json-loader module. Si vous avez utilisé create-react-app pour l'échafaudage de votre projet, le module est déjà inclus, il vous suffit d'importer votre json:

import Profile from './components/profile';

réponse explique plus.

18
répondu Javad Sadeqzadeh 2017-08-13 15:38:12

export default DATA ou module.exports = DATA

5
répondu Salvatore 2016-09-25 11:02:36

s'il vous Plaît stocker votre fichier JSON avec la .js extension et assurez-vous que votre JSON doit être dans le même répertoire.

4
répondu Shubham 2017-09-28 08:45:20

json-loader installé, vous pouvez utiliser

import customData from '../customData.json';

ou, encore plus simplement

import customData from '../customData';

installer json-loader

npm install --save-dev json-loader
3
répondu Mowzer 2018-08-20 15:25:34

Ce vieux châtaignier...

en bref, vous devriez utiliser require et laisser le noeud gérer l'analyse dans le cadre de l'appel require, pas l'externaliser vers un module tiers. Vous devez également veiller à ce que vos configs soient à l'épreuve des balles, ce qui signifie que vous devez vérifier les données retournées avec soin.

Mais par souci de concision, considérons l'exemple suivant:

par exemple, disons que j'ai les admins d'un fichier de configuration.json " à la racine de mon application contenant le code suivant:

[{
  // Note the quoted keys, "userName", "passSalted"!
  "userName":"tech1337",
  "passSalted":"xxxxxxxxxxxx"
}]

je peux faire la suite et obtenir les données du fichier avec facilité.

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

maintenant les données sont entrées et peuvent être utilisées comme un objet régulier (ou un tableau).

1
répondu Tech1337 2018-09-15 22:57:50