🚀🚀
Size: a a a
🚀🚀
M
🚀🚀
🚀🚀
R
Б
const appStore = {tasks: []};
2) при клике по кнопке добавляем новую задачуconst onClick = () => {
appStore.tasks.push({text: "", completed: false, comments: []})
}
3) рендерим где-нибудь в компоненте<div>4) компонент <Task/> получает через пропсы объект задачи и может например отрендерить вложенный список комментариев этой задачи (и также пушить новые комменты в обработчике нового коммента)
{appStore.tasks.map(task => <Task task={task}/>)}
</div>
<div>5) и аналогично каждый компонент <Comment/> получив свой объект комментария может отрендерить список вложенных комментариев или чего-то еще
{task.comments.map(comment => <Comment comment={comment}/>}
</div>
comment.parent.parent.tasks..
Получается очень интересная ситуация что с одной стороны у нас есть единственный глобальный стор а с другой стороны каждый компонент будет работать со своим объектом как будто это локальное состояние (то есть не нужно выносить логику обработки из компонента куда-то в другое место и можно обновлять сам объект по месту в самом компоненте, например обновить текст в инпуте task.text = newValue)const reconcile = () => ReactDOM.render(<App/>, rootEl). Тут может показаться что выполнять дифф всего приложения если изменилось что-то в одном компоненте это медленно но в реальности тормоза появятся лишь на больших приложениях с >10к дом-элементов (и даже тогда можно просто добавить виртуальные списки)M
const appStore = {tasks: []};
2) при клике по кнопке добавляем новую задачуconst onClick = () => {
appStore.tasks.push({text: "", completed: false, comments: []})
}
3) рендерим где-нибудь в компоненте<div>4) компонент <Task/> получает через пропсы объект задачи и может например отрендерить вложенный список комментариев этой задачи (и также пушить новые комменты в обработчике нового коммента)
{appStore.tasks.map(task => <Task task={task}/>)}
</div>
<div>5) и аналогично каждый компонент <Comment/> получив свой объект комментария может отрендерить список вложенных комментариев или чего-то еще
{task.comments.map(comment => <Comment comment={comment}/>}
</div>
comment.parent.parent.tasks..
Получается очень интересная ситуация что с одной стороны у нас есть единственный глобальный стор а с другой стороны каждый компонент будет работать со своим объектом как будто это локальное состояние (то есть не нужно выносить логику обработки из компонента куда-то в другое место и можно обновлять сам объект по месту в самом компоненте, например обновить текст в инпуте task.text = newValue)const reconcile = () => ReactDOM.render(<App/>, rootEl). Тут может показаться что выполнять дифф всего приложения если изменилось что-то в одном компоненте это медленно но в реальности тормоза появятся лишь на больших приложениях с >10к дом-элементов (и даже тогда можно просто добавить виртуальные списки)M
R
DS
🚀🚀
🚀🚀
DS
Б
🚀🚀
🚀🚀
🚀🚀
🚀🚀