コンポーネントから使用するコンポーネントのデータをプリロードする正しい方法がわかりません。react + reduxでコンポーネントデータを事前ロードする正しい方法
私はデータをレンダリングする必要がありますステートレスなコンポーネント書かれています:
import React, { PropTypes } from 'react';
const DepartmentsList = ({ departments }) => {
const listItems = departments.map((department) => (
<li><a href="./{department}">{department.title}</a></li>
));
return (
<ul>
{listItems}
</ul>
);
};
DepartmentsList.propTypes = {
departments: PropTypes.array.isRequired
};
export default DepartmentsList;
を私はAPIからデータを盗んするアクションを持っている:
import { getDepartments } from '../api/timetable';
export const REQUEST_DEPARTMENTS = 'REQUEST_DEPARTMENTS';
export const RECEIVE_DEPARTMENTS = 'RECEIVE_DEPARTMENTS';
const requestDepartments =() => ({ type: REQUEST_DEPARTMENTS });
const receiveDepartments = (departments) => ({ type: RECEIVE_DEPARTMENTS, departments });
export function fetchDepartments() {
return dispatch => {
dispatch(requestDepartments);
getDepartments()
.then(departments => dispatch(
receiveDepartments(departments)
))
.catch(console.log);
};
}
は今、私はいくつかを持っていると思いますリストに必要な部門を事前にロードするオプション。 redux-thunk
とmapDispatchToProps
を使用してfetchDepartmentsをステートレスコンポーネントに挿入し、componentWillMount
またはそれに類似したライフサイクルメソッドを実装してデータをロードすることができました。しかし、コンポーネントが常に自分のデータをロードするため、リストを渡す必要はありません。新しいコンポーネントが作成されるたびに、データがストアの代わりにAPIからフェッチされるので、私はそれを望んでいません...
私が見たもう一つのアドバイスは、react-routerのgetComponent
関数を使用して、しかし、コンポーネントを返す前に、私はそれが正しいredux方法であるかどうかわからない、私はそこにredux-thunkを使用する方法を見ていないと、論理的な種類のすべてのファイルを横領しているようだ、 1つのコンポーネント。
これは、コンテナコンポーネントのライフサイクルメソッドにデータをロードするための一見okですが、私は何をしたいのかというベストプラクティスと考えています。
私は、これは古い質問です実現が、私は誰かがまだ応答を願っています。これは私の問題の解決策だと思われますが、明らかにまだ間違っています。 this.props.getDepartments(); 私にとってはスローとエラーです。それは機能ではないと言います。私は反応するのが新しく、反応を還元し、それを解決する方法はわかりません。どんな助けもありがとう。 –
mapDispatchToPropsで関数をバインドし、reduxストアに接続していることを確認してください。正直なところ、あなたが書いたコードを見ていないと言うのは難しいです... –