2016-09-14 12 views
1

私は、アクションに定義されていない型プロパティがないと不平を言ってもらわないようにしようとしています。redux-thunkをReactで正しく使用するには?

私は次のように私のクライアント側レンダリング設定している:私は正しい方法であると考えられて

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import routes from './shared/routes'; 
import rootReducer from './shared/reducers'; 
import thunk from 'redux-thunk'; 
import { createStore, applyMiddleware } from 'redux'; 
import { Provider } from 'react-redux'; 

let initialState = window.__INITIAL_STATE_; 

const store = createStore(rootReducer, initialState, applyMiddleware(thunk)); 

ReactDOM.render(
<Provider store={store}> 
    {routes} 
</Provider>, document.getElementById('app')); 

を?

+1

あなたはredux-thunkがそのアクションに機能があるかどうかをチェックし、そうであればその機能を呼び出していることを知っていますか? – denysdovhan

+0

はい、タイプとペイロードを含むオブジェクトではなく、関数を呼び出すことができます。私のコードは、その関数の中でdispatch(myAction())を使って呼び出しをトリプルアップしているようです。それが意味をなさないのであれば?私のコードはここにあります:https://github.com/designspin/react-redux-universal – Jason

+0

どのような行動をしますか?一般的には、サンクを使用して非同期アクションをディスパッチします。 –

答えて

1

はい。 redux-thunk githubページには、その使用方法の素晴らしい例があります。あなたの行動のために

、それは非同期アクションだ場合、私は約束して非同期アクションをディスパッチするために、このアプローチを使用しています:

アクション:私のコンポーネントインサイド

export function add({name, time}) { 
    return dispatch => { 
    dispatch({type: ADD}); 
    return postJSON('/api/services', { 
     name, 
     time, 
    }) 
    .then(service => { 
     dispatch({ 
     type: ADD_SUCCESS, 
     service: service, 
     }); 
    }) 
    .catch(error => { 
     dispatch({ 
     type: ADD_FAILURE, 
     error, 
     }); 
    }); 
    }; 
} 

addService() { 
    const { dispatch } = this.props; 
     return (fields) => { 
     dispatch(add(fields)); 
     dispatch(toggleAddForm()); 
     }; 
    } 
+0

単純なプロジェクトの例として見ることができる完全なソースコードは、ここにあります:https://github.com/francorisso/hairdresser –

+0

だから実際にはできませんか? dispatch(loginUserRequest())のように、ディスパッチ内に関数を配置します。あなたは私の行動をここに見ることができます:https://github.com/designspin/react-redux-universal/blob/master/src/shared/actions/index.js – Jason

+0

@ Jasonあなたは同じことを正しくやっていますか?関数を返すアクションクリエイターを作成します。だから、基本的に動作するはずの作者は、サンクが処理する関数を返すべきアクションであり、チェーン内の最後のアクション作成者は明白なオブジェクトを返すべきです。だから私はあなたが正しくそれをやっていると思います。 –

関連する問題