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

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

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

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

並列処理

複数の計算が同時に実行される手法

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

React.js

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

Q&A

解決済

1回答

861閲覧

react-reduxとreact-actionsを使った非同期処理の実現方法

kuukun

総合スコア0

Redux

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

並列処理

複数の計算が同時に実行される手法

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

React.js

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

0グッド

0クリップ

投稿2021/07/05 15:34

前提・実現したいこと

react-reduxとredux-actionsを使った非同期処理について質問です。

superagentのget通信で得たデータをredux-actionsのcreateAction()という機能を使ってreducer側にデータを渡したい。

前提:
・非同期処理を許可するためmiddlewareの許可をするためのredux-thunkを利用
・reducerはcombinereducerで結合済み

発生している問題・エラーメッセージ

下記component/todoでdispatch後 action/index.jsにある処理までは動くが createActionの処理が動いても reducer/taskの中にあるhandleactionの[test]の所に処理が動いてくれない

該当のソースコード

javascript

1action/index.js 2------------------------------------------------------- 3//import系は省略 4export function test(){ 5 return async () => { 6 console.log('return asyncに入りました。'); 7 const response = await request.get(root) 8 const res = response.body.message; 9//get通信のデータは正しく取得できています。 10 console.log('responseのなかみ'+response.body.message); 11 createAction('TEST', (message) => ({message:message = res})); 12 } 13}; 14 15 16reducer/task 17------------------------------------------------------- 18//import系は省略 19const initialState = {//関係のないものは省略しています。 20 Test: [{ 21 message:'default' 22 }], 23} 24 25 26const task = handleActions(//これが動いて欲しい 27 [test]:(state, action) => (console.log('reducerのtestが動いた'),{ 28 Test: [ 29 state.Test, 30 { 31 message : action.payload.message 32 } 33 ] 34}), 35},initialState); 36export default task; 37 38//Route <Providerで全体に共有しているコンポーネント 39------------------------------------------------------- 40//import系は省略 41//middleware許可 及びstoreの共有 42let store = createStore(rootReducer,applyMiddleware(thunk)); 43 44export default class RouteLinks extends Component{ 45 render() { 46 return( 47 <div> 48 <Provider store={store}> 49 <Router> 50 <Switch> 51 <Route exact path="/" component={SelectionPage} /> 52 <Route exact path="/todo" component={Task} /> 53 <Route exact path="/category" component={Category} /> 54 </Switch> 55 </Router> 56 </Provider> 57 </div> 58 ) 59 } 60}

component/todo dispatchを発火させるところ

HTML

1//抜粋 2 <form onSubmit={(e) => { 3 e.preventDefault(); 4 dispatch(test()); 5略... 6 7

試したこと

actionの中でexport const test = createAction(~~)と書くとreducerの所まで処理がしっかりと動く
しかしconst test~ではasyncなどの処理が入れれないためfunction〜と書いている。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

kuukun

2021/07/06 02:34

hoshi-takanoriさん 今回はいろいろ事情があり、redux-actionsで実施する必要があります。
anozon

2021/07/20 01:59

[test]:(state, action) => (console.log('reducerのtestが動いた'),{` ここの [test] の test 変数にはちゃんと "TEST" がはいっていますか?
kuukun

2021/07/22 15:53

こちらのconsole.log('reducerのtestが動いた')については動作確認をする時に目印として入れていたもので、そもそもこちらのテストreducerには処理が走っていません。
guest

回答1

0

自己解決

export function hogehoge(e) {
const hogehoge = 'http://127.0.0.1:8000/xxx'
return async (dispatch) => {
try{
const ID = {id:e}
await request.post(hogehoge).send(ID).end(function(err,res){
dispatch(fetchmount());
})
}catch{
console.log('通信エラーです');
}
}
}

投稿2021/10/11 15:50

kuukun

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問