У меня есть коллекция под названием Items
с полями name
и category
. В /imports/api/Items.js
Симпл-схема определяется как:Коллекция группы метеорных реактивов
const LibItems = new Mongo.Collection('libitems');
LibItems.schema = new SimpleSchema({
category: String,
text: String,
});
LibItems.attachSchema(LibItems.schema);
if (Meteor.isServer) {
Meteor.publish('allLibItems', function() {
return LibItems.find({},);
});
}
export default LibItems;
На странице, я хочу, чтобы сгруппировать элементы в уникальной категории; и покажите только элементы выбранной категории (нажав на категорию). Так что на дне imports/client/libview.js
элементы импортируются и уникальные категории возвращаются:
export default createContainer(() => {
Meteor.subscribe('allLibItems');
var libitems = LibItems.find({}, {sort: {category: 1}}).fetch();
return {
libitems: libitems,
categories: _.uniq(
libitems, false,
function(libitems) {return libitems.category}
),
}
}, LibView);
В render()
коде renderCategory()
называется перечислить категории:
renderCategories() {
return this.props.categories.map((category) => {
return (
<li key={category._id} onClick={this.selectCategory.bind(null, category)}>{category.category}</li>
);
});
}
Как получить товары выбранной категории? Я относительно новичок в ReactJS и Meteor; и может быть более элегантный способ группировки элементов по уникальным категориям.
Как передать на 'selectedCategory' государства? – API
@API let проверить мой обновленный ответ – Khang
> Uncaught TypeError: this.setSelectedCategory не является функцией в LibView.selectCategory – API