2016-05-03 2 views
2

Это обычно для нас, чтобы иметь глубоко вложенные компоненты с реквизитом проходил сверху вниз через объект распространение:Typecheck глубоко вложенный реквизит в React, с потоком

render() { 
    return <MyComponent { ...this.props } />; 
} 

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

Есть ли способ избежать этого, так что реквизиты, аннотированные в верхней части иерархии, будут проверяться на их использование в нижней части иерархии, без необходимости комментировать каждый компонент между ними и без простого экспорта и импорта тип псевдонимов, который нарушит иерархические отношения?

+0

Поток требует, чтобы экспорт модулей был аннотирован явно (http://flowtype.org/docs/modules.html#missing-required-annotations). Я не думаю, что это возможно. –

ответ

1

Попробуйте использовать Flow typeof operator, объявив ParentComponent.someProp, чтобы иметь тот же тип, что и ChildComponent.someOtherProp.

+0

Я не уверен, что понимаю, как это сделать, не требуя, чтобы родитель или ребенок знали конкретно о другом, или 2) экспортировали и импортировали псевдонимы типов. Не могли бы вы включить какой-нибудь образец кода, чтобы проиллюстрировать вашу идею? – glortho

+0

Вы не пройдете № 1 с проверкой типа потока. Вы можете использовать тип 'any', но это отключит проверку типов. Подумайте о том, как компоновать свои компоненты по-разному, чтобы вместо передачи оповещений неизвестного ребенка вы передавали элемент с теми реквизитами, которые уже были применены. Я понимаю, что это не то, что вы хотите, но это может помочь в некоторых ограниченных случаях. – Nikita

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