Я следую учебнику Meteor/Reactjs. У меня есть список элементов, которые мы назовем яблоком, и подсписок элементов, названный апельсином.
Каждый апельсин в коллекции апельсинов имеет поле «appleId», которое сопоставляется с _id соответствующего Apple.
В настоящее время то, что у меня есть, не работает так, как я хочу. Идеальный список должен выглядеть так:
- Apple 1
- Orange 1A
- Оранжевый 1Б
- Apple 2
- Orange 2A
- Оранжевый 2Б
Я использую эти функции:
renderApples() {
return this.props.apples.map((apple) => (
<Apple key = {apple._id} apple={apple) />
));
}
renderOranges() {
return this.props.oranges.map((orange) => (
<Orange key = {orange._id} orange={orange) />
));
}
А затем вызовите их в моем основном компоненте так:
render() {
return (
<div>
<ul>
{this.renderApples()}
</ul>
<ul>
{this.renderOranges()}
</ul>
);
}
Это, очевидно, просто отображает все яблоки, а затем все апельсины, но мне было трудно найти умный способ их рендеринга, как описано выше.
renderApples() { return this.props.apples.map((apple) => ( <Apple key={apple._id} apple={apple} oranges={Oranges.find({appleId: apple._id}).fetch()} /> )); }
Далее:<ul> { this.renderApples() } </ul>
Не то чтобы я думал, что это произойдет автоматически, я просто не могу понять, как вы будете перебирать апельсины. Это просто вложенный цикл for, но синтаксически у меня не было большого успеха. 06.01.2017