Задать вопрос

Как обратиться к JSON файлу через JS react?

Так выводятся новости
const news = [
  {
    title: 'Саша Печкин',
    text: 'В четверг, четвертого числа...'
  },
  {
    title: 'Просто Вася',
    text: 'Считаю, что $ должен стоить 35 рублей!'
  },
  {
    title: 'Гость',
    text: 'Бесплатно. Скачать. Лучший сайт - http://localhost:3000'
  }
];

class News extends React.Component{
    render (){
        return (
            <div classNews="news">
                {this.props.items.map((item, index) =>
                    <blockquote>
                        <h4>{item.title}</h4>
                        <p>{item.text}</p>
                    </blockquote>
                )}
            </div>
        )
    }
}

ReactDOM.hydrate(
    <News items={news} />, 
    document.querySelector('.content')
);

Я хочу вынести их в отдельный json файл, но не понимаю как в таком случает к нему обратиться
допустим файл называется json.json
  • Вопрос задан
  • 1114 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
pterodaktil
@pterodaktil
js developer
в News создать state = { news: null }, положить файл, в componentDidMount() зафетчить его и положить json в this.state.news
Ответ написан
SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов
Как правило, вместе с реактом используется вебпак как бандлер. Он по-умолчанию может импортировать json файл как объект.

import news from "./news.json";

// ...

<div classNews="news">
                {news.map((item, index) =>
                    <blockquote>
                        <h4>{item.title}</h4>
                        <p>{item.text}</p>
                    </blockquote>
                )}
            </div>
// ...


Если файл слишком большой, чтобы класть его в бандл, можно воспользоваться асинхронным импортом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Machez
@Machez
Бу!
Ваш файл json.json должен лежать на сервере и вы должны обратиться к нему через ajax-запрос. Погуглите: react axios
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы