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.
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
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';
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.
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
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).