Как говорится в заголовке: что-то вроде псевдо-кода ниже считается плохой?Проходит компоненты, поскольку реквизит считается плохой практикой?
<Outer
a = { ComponentA }
b = { ComponentB }
/>
var Outer = (props) => {
var ComponentA = props.a;
var ComponentB = props.b;
// do fancy stuff
// ...
return (
<div>
<ComponentA { ...fancypropsForA } />
<ComponentB { ...fancypropsForB } />
</div>
);
}
В качестве примера: Я использую его для отображения данных дерева по-разному, пропуская компонент, который будет обрабатывать данные одного узла.
EDIT
В соответствии с просьбой, я буду стараться, чтобы сделать мой вопрос немного более ясно. Существует компонент, который имеет некоторую логику и некоторую разметку, которая одинакова при каждом использовании этого компонента. Но в этой разметке есть два (или более) места, которые должны быть заменяемыми.
Создайте календарь, который отображает целый месяц. Существует компонент, который отображает индивидуальную дату, и тот, который отображает рабочий день (в верхней строке). Вы хотите повторно использовать этот календарь в нескольких местах, но каждый раз вам нужна разная разметка для компонентов даты и недели.
Одним из способов достижения этой цели является:
<Calendar
data={ data }
weekdayComponent={ MyWeekDayComponent }
dateComponent={ MyDateComponent }
/>
<Calendar
data={ data }
weekdayComponent={ SomeOtherWeekDayComponent }
dateComponent={ SomeOtherDateComponent }
/>
Таким образом, я обнаружил, что это работает. Но я не уверен, что это действительно плохо.
спасибо за ваши предложения; в то время как я не смог найти этот сценарий на конкретной странице, которую вы связали, я нашел ее в соответствующем документе на этой странице: https://facebook.github.io/react/docs/create-fragment.html есть даже proptype для этого – cdx
в вашем редактировании вы удалили ссылку, которая мне действительно помогла. в отношении hocs: неинтересно ли иметь '<Данные дерева = {data} component = {MyNode} />' вместо 'var MyTree = withTree (MyNode); '? –
cdx
ОК, поэтому снова просмотрел документ proptypes, и я подумал, что я неверно истолковал «нулевой» проспект. но есть «React.PropTypes.element», а в docs указано «A React element», поэтому я предполагаю im fine then? – cdx