Приборка и импорты
Приборка
Запустите приложение, если оно у вас не запущено (npm start).
Как вы помните на прошлом скрине, у нас были предупреждения от eslint. eslint - вспомогательный инструмент, который помогает поддерживать код в чистоте, на данный момент у нас следующие проблемы:
./src/App.js
Line 50: Links must not point to "#". Use a more descriptive href or use a button instead jsx-a11y/href-no-hash
Line 126: 'value' is assigned a value but never used no-unused-vars
Line 140: 'agree' is assigned a value but never used no-unused-varsСтрока 50: у ссылки должен быть атрибут href не #, а что-то более вразумительное (замените на '#readmore').
Строка 126 - value - не используется, исправьте:
// было
const { id, value } = e.currentTarget
this.setState({ [id]: e.currentTarget.value })
// стало
const { id, value } = e.currentTarget
this.setState({ [id]: value })Строка 140 - agree - не используется, исправьте:
// было
const { name, text, bigText, agree } = this.state
// стало
const { name, text, bigText } = this.stateПоддерживайте свой код без предупреждений. Если вы не знаете о чем речь, например, сработало правило no-unused-vars, не ленитесь. Изучайте документацию на eslint.org

Импорты
Наша задача - разбить огромный файл src/App.js на компоненты.
Поддерживаются следующие импорты:
С другой стороны поддерживаются следующие экспорты:
Мы создадим несколько файлов, в каждом из которых будем пользоваться именованным экспортом. Затем в App импортируем.
Создайте директорию src/components и в ней создайте файлы для каждого компонента, кроме <App />.
Рассмотрим создание файла, на примере <Article />:
src/components/Article.js
Остальные файлы оформите аналогично.
Должна получиться следующая структура:

При этом, необходимо добавить import'ы в App.js и в News.js
src/App.js
src/components/News.js
Я думаю принцип понятен: в каждом файле мы импортируем то, что нам нужно относительно этого файла.
чтобы подняться на уровень выше -
'../'чтобы на два уровня выше -
'../../'чтобы начать поиск в текущей директории -
'./'чтобы найти компонент Name в текущей директории в components -
'./components/Name'чтобы импортировать из библиотеки -
'название библиотеки'
Наш App.js заметно похудел. Ориентироваться в коде стало удобнее.
myNews тоже можно выкинуть из этого файла.
src/data/newsData.json (экспорт json структуры по дефолту)
Итого: наш App.js нарядный:
src/App.js
Итого: мы не плохо прибрались, разобрались в импортах. Читать App.js стало удобнее, каждый компонент живет в отдельном файле.
Есть несколько подходов к организации файлов в больших проектах, мы лишь сделали первый шаг в этом направлении.
Last updated
Was this helpful?