Я создаю приложение с Meteor, используя пакет react-komposer. Это очень просто: есть компонент верхнего уровня (App), содержащий форму поиска и список результатов. Список получает свои записи через реквизиты, предоставляемые контейнером komposer (AppContainer). Он работает отлично, пока я не попытаюсь реализовать поиск, чтобы сузить результаты, отображаемые в списке.
Это код, с которого я начал (AppContainer.jsx):
import { Meteor } from 'meteor/meteor';
import { composeWithTracker } from 'react-komposer';
import React, { Component } from 'react';
import Entries from '../api/entries.js';
import App from '../ui/App.jsx';
function composer(props, onData) {
if (Meteor.subscribe('entries').ready()) {
const entries = Entries.find({}).fetch();
onData(null, {entries});
};
};
export default composeWithTracker(composer)(App);
Приложение просто отображает весь список записей. Чего я хотел бы добиться, так это передать параметры запроса в Entries.find({}).fetch();
с данными, поступающими из компонента App (захваченными, например, с помощью ввода текста). Другими словами: как передать параметр в AppContainer из компонента App (дочерний) для поиска определенных записей и, в конечном итоге, повторного рендеринга соответствующих результатов. ?
Чтобы уточнить, вот код для App.jsx:
import React, { Component } from 'react';
export default class App extends Component {
render() {
return (
<div>
<form>
<input type="text" placeholder="Search" />
</form>
<ul>
{this.props.entries.map((entry) => (
<li key={entry._id}>{entry.name}</li>
))}
</ul>
</div>
);
}
}
Заранее спасибо!