質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

1回答

2404閲覧

ReduxのmapDispatchToPropsでの複数処理の書き方

moro_is

総合スコア24

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2017/11/25 03:48

編集2017/11/25 09:18

現在、amine-benselim/wp-react-redux(Github)を参考にWordPress REST API + React(Redux)の構成をためしているのですが、mapDispatchToPropsの書き方がいまひとつ理解できず苦戦しています。

例えば、actionCreators.jsgetPosts(page)getPosts(postType,page)のようにしたい場合、Container.jsのmapDispatchToPropsはどのように書けばいいでしょうか?

お手数ですがご教示をお願いいたします。

補足:
containers/mainContainer.js

const mapDispatchToProps = dispatch => { return { getPosts: (postType, page) => { dispatch(getPosts(postType, page)).then(response => { if (!response.error) { let newPosts = posts.concat(response.payload.data); dispatch( getPostsSuccess( newPosts, +response.payload.headers["x-wp-totalpages"] ) ); } else { dispatch(getPostsFailure(response.payload.data)); } }); } }; };

actions/actionCreators.js

export function getPosts(postType = "posts", page = 1) { const request = axios.get( `/wp-json/wp/v2/${postType}?context=embed&per_page=4&page=${page}` ); return { type: actionTypes.GET_POSTS, payload: request }; }

のように対応したところ、

`Unhandled Rejection (TypeError): Cannot read property 'message' of undefined` ./src/reducers/reducer_main.js

とのエラーが出ました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moro_is

2017/11/25 15:29

すみません、どういった意図でしょうか。。?
guest

回答1

0

const mapDispatchToProps = dispatch => { return { getPosts: (postType, page) => { dispatch(getPosts(postType, page)).then(response => { if (!response.error) { let newPosts = posts.concat(response.payload.data); dispatch( getPostsSuccess( newPosts, +response.payload.headers["x-wp-totalpages"] ) ); } else { dispatch(getPostsFailure(response.payload.data)); } }); } }; };

動作確認はしていないですが、普通にこうじゃないでしょうか?
もちろん、getPosts側も編集する必要があります。

投稿2017/11/25 04:17

HayatoKamono

総合スコア2415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moro_is

2017/11/25 06:50

ご回答ありがとうございます。 ご提示いただいたような書き方も試してみたのですが、 ./src/reducers/reducer_main.js `Unhandled Rejection (TypeError): Cannot read property 'message' of undefined` という別のエラーが出てしまったため間違っているのだと思っていました。 どこか別の部分に問題があるor対応に漏れがあるということでしょうか?
HayatoKamono

2017/11/25 08:42

reducer_main.jsのコードは最低限掲載して頂かないと回答のしようがありません。
HayatoKamono

2017/11/26 02:55 編集

質問の内容が変わって来ているので、一度質問を閉じて、新規質問を投稿し直した方が回答がつきやすいかと思います。その際、補足依頼に掲載したリンク先に書いてあることを参考に、ご自身が行なったことを質問文に掲載したり、回答者が状況確認をしやすくなるように必要な情報を掲載すると宜しいかと思います。現状の掲載コードでは情報量が不足しているため、複数のやり取りが発生してしまいます。
moro_is

2017/11/29 15:35

返信が遅れて申し訳ありません。 ご指摘の通り、質問の仕方が不適切だったかも知れません。 ご指導ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問