Я делаю простое приложение для заметок в React. Вот как это выглядит до сих пор:
![enter image description here](https://i.stack.imgur.com/nZ1pr.png)
Каждая заметка представляет собой компонент «Ячейка», который содержит внутренний элемент div для дополнительных дочерних компонентов ячейки. Приложение содержит div для панели навигации и div для заметок, а в div для заметок я визуализирую ячейки с помощью .map (). Заметки хранятся в состоянии приложения, как это ...
notes: [
{
contents: "Learn React",
children: [
{
contents: "Finish tutorial series",
children: []
},
{
contents: "Do example project",
children: []
}
]
},
{
contents: "Learn Redux",
children: []
},
{
contents: "Build note-taking app",
children: []
}
]
(У меня есть функция в конструкторе, которая динамически присваивает идентификационный номер каждой заметке перед рендерингом приложения.)
Моя проблема заключается в том, что каждый раз, когда пользователь изменяет заметку, которая изменяет соответствующую заметку в объекте заметок в состоянии приложения (ячейки имеют обработчик onBlur, переданный из приложения, которое передает идентификатор ячейки, и я затем выполняю поиск в объекте заметок этого идентификатора и изменения содержимого), и это приводит к повторному отображению всей страницы, так как состояние верхнего уровня изменилось. Разве это не разрушает всю цель React? Если весь компонент приложения будет перерисован при изменении его состояния, я думаю, что «поднятие состояния» до уровня приложения будет плохим, но похоже, что React поощряет это.
Мне нужно хранить заметки в состоянии верхнего уровня, чтобы я мог экспортировать их или перейти на новую страницу заметок с помощью навигационной панели, но если я делаю это, то каждый раз, когда я изменяю какую-либо маркированную заметку, все остальные - не правда ли, проблема?