Приборка и импорты

Приборка

Запустите приложение, если оно у вас не запущено (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

clean console

Импорты

Наша задача - разбить огромный файл src/App.js на компоненты.

Поддерживаются следующие импорты:

С другой стороны поддерживаются следующие экспорты:

Мы создадим несколько файлов, в каждом из которых будем пользоваться именованным экспортом. Затем в App импортируем.

Создайте директорию src/components и в ней создайте файлы для каждого компонента, кроме <App />.

Рассмотрим создание файла, на примере <Article />:

src/components/Article.js

Остальные файлы оформите аналогично.

Должна получиться следующая структура:

folders news cra

При этом, необходимо добавить 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?