React Вывод элементов списка

Только начал изучать Реакт столкнулся с непониманием, как и где выводить элементы списка. Приведу пример:

const booksDescription = [
  {
id: 1,
bookName: "Понедельник начинается в субботу",
authorNumber: 1
  },
  {
id: 2,
bookName: "Гарри Поттер и Орден Феникса",
authorNumber: 3
  },
  {
id: 3,
bookName: "Сказание о трех свинах",
authorNumber: 4
  }
];

const booksAuthor = [
  {
id: 1,
authorName: "Борис",
authorSurname: "Стругацкий"
  },
  {
id: 2,
authorName: "Аркадий",
authorSurname: "Стругацкий"
  },
  {
id: 3,
authorName: "Джоан",
authorSurname: "Роулинг"
  },
  {
id: 4,
authorName: "Джон",
authorSurname: "Толкиен"
  }
];

function WorkSpace(props) {
  let Books = booksDescription.map((el) => (
<BookItem
  id={el.id}
  key={el.id}
  bookName={el.bookName}
  authorNumber={el.authorNumber}
/>
  ));

  return (
<main className={"main"}>
  <div id="FullListBook" className="BooksAll ">
    {Books}
    {/* <BookArticle/> */}
  </div>
</main>
  );
}

class BookItem extends React.Component {
  render() {
const book = this.props;
const authorsOfBookNumber = book.authorNumber - 1;

const authorOfBookName = booksAuthor[authorsOfBookNumber].authorName;
const authorOfBookSurname = booksAuthor[authorsOfBookNumber].authorSurname;

const authorsOfBookFull = authorOfBookSurname + " " + authorOfBookName;

return (
  <div className="bl_book__item">
    <a className="bl_book__link" href="#">
      <p className="bl_book__name">
        <p className="bl_book__title">{book.bookName}</p>
        <p className="bl_book__author">{authorsOfBookFull}</p>
      </p>
    </a>
  </div>
);
  }
}

class BookArticle extends React.Component {
  render() {
const book = booksDescription[1];
const authorsOfBookNumber = book.authorNumber - 1;

const authorOfBookName = booksAuthor[authorsOfBookNumber].authorName;
const authorOfBookSurname = booksAuthor[authorsOfBookNumber].authorSurname;

const authorsOfBookFull = authorOfBookSurname + " " + authorOfBookName;

return (
  <article>
    Тут описание книги {book.bookName} от автора {authorsOfBookFull}
  </article>
);
  }
}

function App() {
  return <WorkSpace />;
}

ReactDOM.render(<App />, document.getElementById("root"));
.bl_book__item {
  display: inline-block;
  width: 150px;
  height: 200px;
  max-resolution: 40px;
  border: 1px solid #000;
}

article {
  padding: 10px;
  border: 1px solid #f00;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>

Первый вопрос - как добиться вывода указанного количества элементов (например 2 книг) из списка. На сервере ведь будет храниться база с тысячами записей о книгах, неужели надо их все "прочитать" и создать на их основе новый массив.

Второй вопрос - Если есть необходимость, после нажатия на ссылку bl_book__link разворачивать компонент BookArticle передавая ему текущие данные, о нажатой книге, то опять же, как это делать ?


Ответы (0 шт):