Я хочу сделать что-то вроде этогоFlux/React комплекса многоразового компонента
var App = React.createClass({
render: function() {
return (
<CountryAutoComplete />
)
}
});
Различных приложений
var App2 = React.createClass({
render: function() {
return (
<CountryAutoComplete />
)
}
});
Вот простое автозаполнение (не весь файл)
var AutoComplete = React.createClass({
componentDidMount: function() {
$(this.getDOMNode()).typeahead(this.props);
},
render: function() {
return (
<input type="text" class="typeahead" onChange={this.props.onChange} />
);
}
});
CountryAutoComplete был бы чем-то подобным, чтобы быть самодостаточным.
var CountryAutoComplete = React.createClass({
search: function(country, process) {
// Make an ajax call and return the data. No other components needed
$.ajax({
url: '/country' + '?search=' + country
}).then(process);
},
render: function() {
return (
<AutoComplete onChange={this.props.onChange} source={this.search} />
);
}
});
Основываясь на Flux документации, это выглядит как что-либо с вызовом API должен пройти через действия
-> API -> Диспетчер -> Магазины -> компонент
Это делает CountryAutoComplete привязан к определенному приложению, потому что действия, Диспетчер и магазины специфичны для приложения. Каков наилучший способ сделать этот компонент многоразовым для всех приложений?
Спасибо за подробный ответ. Это было очень полезно. Компоненты не предполагают, чтобы напрямую поддерживать API или API вызовов? Кажется, что это очень много плиты котла, чтобы использовать этот компонент каждый раз. Диспетчер является специфическим для приложения. –
хорошо реагировать - это взгляд, поэтому любые запросы ajax (вызовы api), на мой взгляд, должны быть отделены от реагирующих компонентов. это может быть много плиты котла, но он удерживает компонент повторно и изолирован. Вот более выписанная статья о потоке данных: http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/ – trekforever
Поскольку автозаполнение полагается на ajax , а ajax принадлежит отдельному компоненту/диспетчеру, любой компонент, который полагается на ajax, действительно не может быть независимым, повторно используемым компонентом? Что было бы неправильно с тем, что ajax содержится в компоненте автозаполнения и что компонент излучает события, которые могут прослушивать диспетчер приложений и хранилище? – jczaplew