Вызов AJAX возвращает данные, но как назначить его переменной класса, чтобы я мог использовать ее в другом методе? Вот мой код (это reactjs компонент):Как назначить значение, возвращаемое вызовом jQuery AJAX переменной класса?
import React from 'react';
import jQuery from 'jquery';
import ListPotions from './list_potions';
export default class Potions extends React.Component {
constructor(props) {
super(props);
this.state = {potions: []};
this.fetchPotions = this.fetchPotions.bind(this);
this.objToStrMap = this.objToStrMap.bind(this);
}
componentDidMount() {
this.fetchPotions();
}
fetchPotions() {
jQuery.ajax({
url: this.props.endPoint,
dataType: 'json',
cache: false,
headers: {
"Authorization": btoa('mixOfRandomPotions')
},
success: function(data) {
let potions = this.objToStrMap(data);
this.setState({ potions });
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.endPoint, status,
err.toString());
}.bind(this)
});
}
objToStrMap(obj) {
let strMap = new Map();
for (let k of Object.keys(obj)) {
strMap.set(k, obj[k]);
}
return strMap;
}
render(){
console.log(this.potions);
return (
<div className="{this.props.className}">
<ul>
{this.state.potions.map((potion) => <ListPotions key="{potion.id}" potion={potion} />)}
</ul>
</div>
);
}
}
Как вы можете видеть, что я задаю его this.potions
но render()
метода, список пуст.
вы уверены, что данные извлекаются быть правильно? – mattias
Вы должны использовать «состояние» для реагирующих компонентов. – Hosar
@ Matías Я попытался вывести его в консоли несколько раз, «данные» содержат извлеченное значение. – adredx