Я пытаюсь создать простое приложение поиска в реальном времени, чтобы узнать React.js. Я смог имитировать его с использованием фиктивных данных, но у меня возникают проблемы при попытке сделать то же самое с json из url/api. Я не хочу никакого события onClick, поэтому я использовал изменение состояния для поиска.Поиск в реальном времени с использованием response.js из url api
URL-адрес, с которого я буду получать данные должны быть как
URL = 'myurl/апи =' + SearchString;
Так что я хочу, чтобы данные были собраны в тот момент, когда я что-то набираю. Это возможно?
Пожалуйста, дайте мне знать, если я смогу это сделать без включения события onClick.
Вот мой fiddle для этого:
var SearchStock = React.createClass({
getInitialState: function() {
return {searchString: '', data : []};
},
handleChange: function(e) {
this.setState({searchString: e.target.value});
},
componentDidMount: function() {
var url = 'myurl/api' + searchString;
this.serverRequest = $.get(url, function(result) {
var quote = result;
this.setState({quote});
}.bind(this));
},
componentWillUnmount: function() {
this.serverRequest.abort();
},
render: function() {
var stocks = this.props.items, searchString = this.state.searchString.trim().toLowerCase();
// var stocks = this.state.data, searchString = this.state.searchString.trim().toLowerCase();
if (searchString.length > 0) {
stocks = stocks.filter(function(l) {
return l[Object.keys(l)[0]]["symbol"].toLowerCase().match(searchString);
});
}
return <div >
< input type = "text" value = {this.state.searchString} onChange = {this.handleChange} placeholder = "Type here"/>
<ul>
{stocks.map(function(l) {
return <li > {l[Object.keys(l)[0]]["name"]} < /li>
})
}
< /ul>
< /div>;
}
});
var stocks = [{"F": {"symbol": "F", "name": "Ford Motor", "bidPrice": 13.41, "askPrice": 13.36}}];
// ReactDOM.render(< SearchStock />,document.getElementById('container'));
ReactDOM.render(< SearchStock items = {stocks}/>, document.getElementById('container'));
Я был бы признателен за любую помощь я могу получить. Пожалуйста, дайте мне знать, если есть ошибка. :)
Да, это имеет смысл. Но теперь, когда я проверю это. Я не думаю, что даже могу получить какие-либо данные, когда я жестко кодирую значение url, он все равно ничего не дает. Я сожалею, что я новичок в реакции, и я знаю, что это должно быть очень глупая ошибка на моем конце. Но я был бы признателен, если бы вы могли посмотреть на мою скрипку и проверить, что не так с тем, как я получаю данные с URL-адреса, поскольку я чувствую, что следил за их документацией для загрузки. Вначале я ожидаю «Форд Моторс» в списке. –
Вот обновленный jsfiddle: http://jsfiddle.net/69z2wepo/49204/, однако этот код не будет работать. Ваш сервер не отвечает заголовками CORS, поэтому запросы от внешних серверов, таких как JSFiddle, будут отклонены. См. Https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS XMLHttpRequest не может загрузить http://data.benzinga.com/rest/richquoteDelayed?symbols=F. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Следовательно, «Начало» http://fiddle.jshell.net 'не допускается. –