Структура React-приложения


Сейчас код приложения имеет вот такой вид и лежит в файле index.js

import React from 'react';
import ReactDOM from 'react-dom';

const TodoList = () => {
  const items = ['Learn React', 'Create Awesome App'];
  return (
    <ul>
      <li>{items[0]}</li>
      <li>{items[1]}</li>
    </ul>
  );
};

const AppHeader = () => {
  return <h1>My Todo List</h1>;
};

const SearchPanel = () => {
  return <input placeholder = 'search' />;
};

const App = () => {
  return (
    <div>
      <AppHeader/>
      <SearchPanel/>
      <TodoList/>
    </div>
  );
};

ReactDOM.render(<App/>, document.querySelector('#root'));

Но такой код плохо масштабируется.
Типичный паттерн организации кода реакт-приложения - один файл - один компонент.
В папке src проекта создаём папку components
В ней создаём файлы js, с названиями, которые повторяют названия компонентов, копируем в них код компонентов, не забывая в конце прописать експорт.
Например, в файле TodoList.js находится такой код:

import React from 'react';
import ReactDOM from 'react-dom';

const TodoList = () => {
  const items = ['Learn React', 'Create Awesome App'];
  return (
    <ul>
      <li>{items[0]}</li>
      <li>{items[1]}</li>
    </ul>
  );
};

export default TodoList;

Все вынесенные в папку components js-файлы импортируем в файл index.js

import React from 'react';
import ReactDOM from 'react-dom';

import AppHeader from './components/AppHeader';
import SearchPanel from './components/SearchPanel';
import TodoList from './components/TodoList';

const App = () => {
  return (
    <div>
      <AppHeader/>
      <SearchPanel/>
      <TodoList/>
    </div>
  );
};

ReactDOM.render(<App/>, document.querySelector('#root'));

Структура приложения
1. Один компонент - один файл
2. Все компоненты помещаем в папку components
3. Хорошие компоненты - независимые компоненты