Импортировать файл JSON в React
Я новичок в React, и я пытаюсь импортировать переменную JSON DATA
из внешнего файла. Я получаю следующую ошибку:
Не удается найти модуль "./customData.json"
Может кто-нибудь мне помочь? Он работает, если у меня есть переменная DATA
в index.js
но не во внешнем JSON файле.
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'));
hobbies.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;
profile.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
Ответы
Ответ 1
Один приятный способ (без добавления поддельного расширения.js, предназначенного для кода, а не для данных и конфигураций) - использовать модуль json-loader
. Если вы использовали приложение create-react-app
для подстройки вашего проекта, модуль уже включен, вам просто нужно импортировать json:
import Profile from './components/profile';
Этот ответ объясняет больше.
Ответ 2
попробуйте export default DATA
или module.exports = DATA
Ответ 3
Сохраните файл JSON с расширением.js и убедитесь, что ваш JSON должен находиться в одном каталоге.
Ответ 4
Этот старый каштан...
Короче говоря, вы должны использовать require и позволить узлу обрабатывать парсинг как часть требуемого вызова, а не передавать его стороннему модулю. Вы также должны следить за тем, чтобы ваши конфиги были пуленепробиваемыми, что означает, что вы должны тщательно проверить возвращаемые данные.
Но для краткости рассмотрим следующий пример:
Например, скажем, у меня есть файл конфигурации "admins.json" в корне моего приложения, содержащий следующее:
[{
// Note the quoted keys, "userName", "passSalted"!
"userName":"tech1337",
"passSalted":"xxxxxxxxxxxx"
}]
Я могу сделать следующее и легко получить данные из файла.
let admins = require('~/app/admins.json');
console.log(admins[0].userName);
Теперь данные находятся и могут использоваться как обычный (или массив) объект.
Ответ 5
С установленным json-loader
вы можете использовать
import customData from '../customData.json';
или, что еще проще
import customData from '../customData';
Для установки json-loader
npm install --save-dev json-loader
Ответ 6
//переименовать файл.json в.js и сохранить в папке src
Объявите объект json как переменную
var customData = { "key":"value" };
Экспортируйте его с помощью module.exports
module.exports = customData;
Из компонента, который нуждается в этом, убедитесь, что назад две папки глубоко
import customData from '../customData';