У меня есть несколько следующих состояний приложения дерево:ngrx - обновление одного элемента в списке элементов
AppState
{
MyPage1 - MyList - MyItem[]
MyPage2 - MySubPage - MyList - MyItem[]
MyPage3 - MyItem //can be stand-alone as well
}
Итак, у меня есть список элементов на странице. Я загружаю этот список, отправив действие в редуктор MyList. Как только элементы загружаются, они передаются в качестве входа в MyListComponent, что соответственно создает MyItemComponents с соответствующими входами. MyItemComponent может быть автономным. Таким образом, это не всегда зависит от MyList.
Дело в том, что каждый из MyItems имеет свои собственные действия (например, их можно любить или редактировать). И я в настоящее время застрял где и какие действия я должен отправить в этом случае. Как определить, какой элемент был обновлен и какой список я должен обновить.
Каким будет поток действий при обновлении пользователем одного из элементов в списке?
А также - было ли обнаружено изменение состояния MyList, если я сменил один из MyItem напрямую?
Сценарий я мог думать о том, (в то время как имеющие все необходимые действия на самом MyItem), чтобы добавить дополнительные действия в MyList - например:
updateItem(payload:
{
updateType, //e.g. like, edit, delete
data, //data needed to make an update
itemId //index in the MyItem array
})
Потом, как-то я огонь другое действие от MyList до указанного MyItem из массива, элемент запускает соответствующее действие для обновления своего собственного состояния (обновляется через @Effect) Если обновление было успешным, для обновления списка запускается новое действие.
Чтобы быть честным, все это выглядит довольно подробным и неопределенным. Даже не уверен, как это будет реализовано на практике. На самом деле нужно предложение от кого-то с опытом.
p.s. Я должен упомянуть, что все данные извлекаются и отправляются обратно из/в REST api.
Редактировать: Если после подхода от Comprehensive Introduction to @ngrx/store приложение будет иметь тоны повторяющихся действий (каждый контейнер - MyList - повторил бы все действия из MyItem). Будет ли более подходящий подход для моего дела?
Рекомендация: хороший вопрос! –