2015-11-23 2 views
1

Я знаю, что вы можете использовать cloneElement для изменения реквизита детей. Но будет ли это «плохо», если родительский реквизит дочерних/детских реквизитов через элемент клонирования?cloneElement для детей детей

Простой пример: <MasterOfVisiblity> <div> <div visibility={false}>Hello</div> <div visibility={true}>World</div> <div visibility={false}></div> </div> </MasterOfVisibility>

MasterOfVisiblity бы рекурсия и искать видимость пропеллера и позволяет сказать, что клон детского ребенка и установить стили

ответ

0

Да, cloneElement для детей, чтобы изменить реквизит. Родитель предоставляет реквизиты, поэтому не нужен cloneElement. Он просто изменяет реквизит через setState.

0

Я бы посоветовал, поскольку кажется, что вы хотите управлять стилями. К сожалению, cloneElement не объединяется и не делает ничего умного со стилями или именами классов. docs

Что касается повторного использования компонентов, тем дальше вы рекурсируете. Я предполагаю, что вы будете вынуждены либо делать больше предположений о том, какие компоненты являются дочерними, либо осуществлять какие-либо проверки.

Мой совет заключается в том, чтобы следовать общему соглашению о прохождении реквизита вниз и иметь компоненты, обрабатывающие то, что должно произойти с самим собой. Возможно заменить <div visibility={false}></div> на

<div> 
    <Component isVisible={true} /> 
</div> 
Смежные вопросы