私は依然として反応コンポーネントのライフサイクルとどこで呼び出すべきかの把握を試みています。親メソッドにバインドされている子コンポーネントのアクションに基づいて、2つの状態要素を更新する必要がある次のコードがあります。これを行う最善の方法は何ですか?私は本質的にすべての私のデータ操作とロジックを親/コンテナにできるだけ置くことに固執しようとしています。反応する親コンポーネントのデータを復習する
axios呼び出しのURLにUncaught TypeError: Cannot read property 'state' of undefined(…)
というエラーが表示されます。私はエラーに対処する方法とこれを行うための最善の方法を知りたい。選択した年が変更されたときに、どこでデータを再取得する必要がありますか?
import React from 'react';
import axios from 'axios';
import MonthView from './MonthView.js';
class MonthViewContainer extends React.Component {
constructor() {
super();
this.state = {
data: [],
selectedYear: 2016
}
this.handleAddYear = this.handleAddYear.bind(this);
this.handleSubtractYear = this.handleSubtractYear.bind(this);
}
componentDidMount() {
var self = this;
var defaultYear = this.state.selectedYear
axios.get('http://localhost:3001/api/transfilter?year=' + defaultYear + '&grouping=2')
.then(function (response) {
console.log(response);
self.setState({data: response.data});
})
.catch(function (error) {
console.log(error);
});
}
render() {
return <MonthView data={this.state.data} selectedYear={this.state.selectedYear} onAddYear={this.handleAddYear} onSubtractYear={this.handleSubtractYear} />;
}
handleAddYear() {
const newyear = this.state.selectedYear + 1;
this.setState({selectedYear: newyear}, function() {
console.log(this.state.selectedYear);
});
getTransactions();
}
handleSubtractYear() {
const newyear = this.state.selectedYear - 1;
this.setState({selectedYear: newyear}, function() {
console.log(this.state.selectedYear);
});
getTransactions();
}
}
function getTransactions(){
var self = this;
axios.get('http://localhost:3001/api/transfilter?year=' + this.state.selectedYear + '&grouping=2')
.then(function (response) {
console.log(response);
self.setState({data: response.data});
})
.catch(function (error) {
console.log(error);
});
}
export default MonthViewContainer;
ありがとうございました。それはうまくいった。私は前にその方法を設定しましたが、問題は私がgetTransactions呼び出しに適切なコンテキストを提供していないことでした。また、私はFluxパターンに切り替えるつもりですが、私は学んでいるので、より高度なものを得る前に、基本のしっかりした取り扱いをして、この種の間違いを作りたいと思っています。 –
これは適切な場所であるかどうかわかりませんが、その質問に対する否定的な投票は何ですか?フォーマットが正しくないためですか? –