-
Напиши застосунок зберігання todo-листів.
-
Під час додавання та видалення контакту контакти зберігаються у
localStorage
. -
Під час завантаження застосунку todo-листа, якщо такі є, зчитуються з локального сховища і записуються у внутрішній стан компонента
Todos
.В проекті налаштовані Alias imports тому всі імпорти можна вказувати з папки
components
import { Text } from 'components';
Застосунок повинен складатися з форми і списку todo-листів. На поточному кроці реалізуй додавання тудушки та відображення їх списку. Застосунок повинен зберігати тудушки між різними сесіями (оновлення сторінки).
Використовуйте готову структуру форми з попередньго таска: компонент <Form/>
приймає один проп onSubmit
- функцію для передачі значення інпута під час
сабміту форми.
<form className={style.form}>
<button className={style.button} type="submit">
<FiSearch size="16px" />
</button>
<input
className={style.input}
placeholder="What do you want to write?"
name="search"
required
autoFocus
/>
</form>
state
, що зберігається в батьківському компоненті <Todos/>
, обов'язково
повинен бути наступного вигляду.
const [todos, setTodos] = useState([]);
Кожна todo повинна бути об'єктом з властивостями text
та id
. Для генерації
ідентифікаторів використовуй будь-який відповідний пакет, наприклад
nanoid. Після завершення цього кроку,
застосунок повинен виглядати приблизно так.
Список карток тудушок. Створює компонент наступної структури. Для створення
списку потрібно використати універсальний компонент <Grid/>
<Grid>
{array.map(() => (
<TodoListItem />
))}
</Grid>
Компонент елемента тудушки. Створює компонент наступної структури. Для створення
одного елемента списку потрбно використати універсальний компонент <GridItem/>
<GridItem>
<div className={style.box}>
<Text textAlign="center" marginBottom="20">
TODO #1
</Text>
<Text>Some description</Text>
<button className={style.deleteButton} type="button">
<RiDeleteBinLine size={24} />
</button>
</div>
</GridItem>
Розшир функціонал застосунку, дозволивши користувачеві видаляти раніше збережені тудушки.
Додай можливість редагувати попередньо створені todo
Після додавання кнопки редагування компонент <TodoListItem/>
буде мати такий
вигляд
<GridItem>
<div className={style.box}>
<Text textAlign="center" marginBottom="20">
TODO #1
</Text>
<Text>Some description</Text>
<button className={style.deleteButton} type="button">
<RiDeleteBinLine size={24} />
</button>
<button className={style.editButton} type="button">
<RiEdit2Line size={24} />
</button>
</div>
</GridItem>
Компонент форми для редагування <EditForm/>
буде мати такий вигляд
<form className={style.form}>
<button className={style.submitButton} type="submit">
<RiSaveLine color="green" size="16px" />
</button>
<button className={style.editButton} type="button">
<MdOutlineCancel color="red" size="16px" />
</button>
<input
className={style.input}
placeholder="What do you want to write?"
name="text"
required
defaultValue={defaultValue}
autoFocus
/>
</form>