Условный рендеринг полезен, но вам могут понадобиться ваши компоненты для отображения неизвестного количества элементов. Часто в реактивном программировании программист не имеет никакого способа узнать, какое состояние приложения находится во время выполнения, потому что так много зависит от взаимодействия пользователя с этой программой. Программистам необходимо написать свой код для правильной обработки этого неизвестного состояния раньше времени. Использование <code>Array.map()</code> в React иллюстрирует это понятие. Например, вы создаете простое приложение «To Do List». Как программист, у вас нет способа узнать, сколько элементов пользователь может иметь в своем списке. Вам необходимо настроить компонент для <em><strong>динамического отображения</strong></em> правильного количества элементов списка задолго до того, как кто-то, использующий программу, решит, что сегодня день прачечной.
Редактор кода имеет большую часть компонента <code>MyToDoList</code> . Некоторые из этого кода должны выглядеть знакомыми, если вы завершили задачу контролируемой формы. Вы заметите <code>textarea</code> и <code>button</code> , а также несколько методов, которые отслеживают их состояния, но пока ничего не отображается на странице. Внутри <code>constructor</code> создайте объект <code>this.state</code> и определите два состояния: <code>userInput</code> должен быть инициализирован как пустая строка, а<code>toDoList</code> должен быть инициализирован как пустой массив. Затем удалите комментарий в методе <code>render()</code> рядом с переменной <code>items</code> . На своем месте, <code>toDoList</code> массив <code>toDoList</code> хранящийся во внутреннем состоянии компонента, и динамически визуализируйте <code>li</code> для каждого элемента. Попробуйте ввести строку <code>eat, code, sleep, repeat</code> в <code>textarea</code> , затем нажмите кнопку и посмотрите, что произойдет. <strong>Примечание.</strong> Возможно, вы знаете, что все дочерние элементы дочернего элемента, созданные с помощью операции сопоставления, такие как это, должны быть снабжены уникальным <code>key</code> атрибутом. Не беспокойтесь, это тема следующей задачи.
- text: When the <code>Create List</code> button is clicked, the <code>MyToDoList</code> component should dynamically return an unordered list that contains a list item element for every item of a comma-separated list entered into the <code>textarea</code> element.