私は反応の状態を更新することに関連した1つの問題に遭遇しました。すぐに配列の状態を設定するには?
私はいくつかのデータを持っており、このデータを使ってテーブルを作成したいと考えています。しかし、私は最初にそれをフィルタリングしたいと思います。フィルタリングは正常に機能していますが、フィルタリングされたデータを更新して次のコンポーネントにスローするだけで問題はありません。(私はsetStateがすぐには動作しないことを知っています...)
ReportTableコンポーネントのupdatedReportsはまだフィルタリングされていませんデータ... それを修正し、配列の状態を更新する最も良い方法は何ですか?あなたは多分コンポーネントのライフサイクルメソッドを使用することができます
export default class ReportContent extends React.Component {
constructor(props) {
super(props);
this.state = {
currentReports: this.props.reports
};
}
_filterBy(option) {
let updatedReports = [...this.props.reports].filter(report => {
if (report.organizations === option || report.reportType === option) {
return report;
}
});
console.log(updatedReports);
this.setState({currentReports: updatedReports});
}
render() {
return (
<div className="reports-table">
<ReportMenu organizations={this.props.organizations} reportTypes={this.props.reportTypes}
filterBy={this._filterBy.bind(this)}/>
<ReportTable updatedReports={this.state.currentReports}/>
</div>
);
}
}
'_filterBy'メソッドの' option'パラメータの構造を除いて、私はコードに何か間違いはありません。 'ReportMenu'コンポーネントと' option'パラメータの構造体を投稿できますか? – jpdelatorre
@jpdelatorreオプションのパラメータは正常です...私がupdatedReportsをログに記録するとき - 私は欲しいものを得ました...問題は、currentReportsがすぐに更新されないということです。 – alingo