2015-11-05 14 views
1

Я хотел бы иметь родительский компонент, который имеет возможность найти всех потомков определенного типа класса React и передать ему опору. Поэтому, учитывая структуру, как это:Как передать опору всем детям и внукам определенного типа

<Parent> 
    <div> 
    <em> 
     <GimmeProps /> 
    </em> 
    </div> 
    <GimmeProps /> 
</Parent> 

Метод ParentcomponentDidMount сможет найти все <GimmeProps> элементы и установить их в качестве таковых:

<GimmeProps magic={this.callback} /> 

Как мне это сделать? Я уже пробовал использовать React.Children.forEach рекурсивно, но я не могу сказать тип класса React, и я не думаю, что могу настроить реквизиты таким образом.

ответ

1

Я считаю, что вы ищете context, а не реквизиты. Контекст ведет себя во многом так же, как реквизит, но они передаются от компонента ко всем их детям и внукам.

Они могут быть доступны в детей с использованием this.context.foo

Вот Блогпост объясняет, как использовать реквизит: https://www.tildedave.com/2014/11/15/introduction-to-contexts-in-react-js.html

Официальный реагирующие документацию для связи: https://facebook.github.io/react/docs/context.html

+0

'context' рискует быть осуждается. Я видел дискуссию между разработчиками React, и никому из них не нравилась эта часть API. – ffxsam

+0

@ffxsam, так что альтернатива? Имеете ли вы свою специальную «контекстную» опору, которую каждый из слоев вручную передает? –

+0

@ReneSaarsoo Не уверен, что такое альтернатива, поэтому я публикую здесь. Я мог бы использовать архитектуру Flux, но я пытаюсь сохранить эти компоненты на 100% чистым React. – ffxsam

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