componentDidMountでAJAX呼び出しを行った後に状態が更新されません。私のAPI呼び出しが正しいデータを返しています。setState()を使用してAJAX呼び出し後に状態が更新されない
私は間違ったライフサイクルコンポーネントでsetStateを実行している場合は、任意のアイデア? componentDidMountでAJAXリクエストを作成し、そこに新しい状態を設定します。私が反応で
class DeliveryDateInput extends React.Component {
constructor(props) {
super(props);
this.getDeliveryDate = this.getDeliveryDate.bind(this);
this.state = {
selectDate: selectedDate || validDelDateArray[0],
validDeliveryDateArray: validDelDateArray,
firstDeliveryDay: [],
lastDeliveryDay: [],
selectedDate: [],
deliveryDatesAllowed: [],
offDays: [],
};
}
componentDidMount() {
console.log('App componentDidMount');
this.getDeliveryDate();
}
componentWillUpdate(nextProps, nextState) {
this.getDeliveryDate();
console.log('Your prev offday state: ' + this.state.offday);
console.log('Your next offday state: ' + nextState.offday);
}
getDeliveryDate() {
const self = this;
$.ajax({
type: 'GET',
url: //deliveryDateAPI,
contentType: 'application/json; charset=utf-8',
success(data) {
self.setState({
firstDeliveryDay: data.firstDeliveryDate,
lastDeliveryDay: data.lastDeliveryDay,
selectedDate: data.firstDeliveryDate,
deliveryDatesAllowed: data.deliveryDates,
offDays: data.offDays,
});
},
failure(errMsg) {
console.log(errMsg);
},
});
}
'componentDidMount 'の内部にデータを取得して状態をセットするのに間違いはありません。データを取得した後に 'success'コールバックが呼び出されますか?そして '$ .ajax'というオプションは' fail'というものはありません。それを 'error'に変更する必要があります。 –
あなたはまだこの問題を解決しましたか?はいの場合は、投票を検討するか、私の答えを受け入れてください、ありがとう^^! – thinhvo0108