2015-11-14 3 views
0

Есть ли способ React-okay передать новые реквизиты детям без повторной рендеринга родителя? Ничто в родительском компоненте не меняется, за исключением того, что новые реквизиты передаются этому компоненту, который передается его дочерним элементам. Я думал, что контекст может быть уместным в этой ситуации, но похоже, что в документации указано иное.Передача реквизита детям без повторной рендеринга родителя

+0

какой? вся точка реквизита должна быть передана от родителя к ребенку. вы не возвращаете родителя. если данные изменяются для ребенка .. но не родительский ... он не отображается повторно. вот и вся точка реагирует на виртуальный дом. –

+0

Под «повторным рендерингом» я предполагаю, что вы снова вызываете функцию «render()». Если нет, вам не о чем беспокоиться благодаря виртуальной DOM. В любом случае, вы можете использовать flux/redux, но это тоже может быть грязным. Или может иметь смысл иметь какую-то функцию обратного вызова, которая обновляет внутреннее состояние дочернего компонента. Трудно думать о какой-либо законной причине, чтобы не называть 'render()' несколько раз, хотя. Он должен быть идемпотентным и редко медленным. Если производительность является проблемой, посмотрите на 'shouldComponentUpdate'. –

ответ

1

Это зависит от того, что вы имеете в виду под реакцией - хорошо. На самом деле вы можете использовать contexts, но я не рекомендую его. Гораздо проще рассуждать и отлаживать реквизиты, проходящие прямо через вашу иерархию представлений, и если родитель не меняется вообще, функция рендеринга должна быть довольно дешевой для выполнения.

Если это не так, вам может потребоваться переосмыслить, как вы структурируете свои компоненты. Например, вы можете захотеть разделить дорогостоящую часть на отдельный компонент, который будет отображаться только тогда, когда соответствующие реквизиты действительно изменились или, по крайней мере, обеспечит дорогостоящую функциональность за условной реквизитом.

Смежные вопросы