2016-10-03 1 views
0

私は非常に反応して還元するので、次のことが良い方法と考えられるかどうかはわかりません。アクションクリエイターのサンクからオブジェクトを返す/解決する - これは大丈夫ですか?

私のケースでは、私は状態コンテナとしてreduxを使用した反応ネイティブプロジェクトを持っています。私は追加ボタン付きの普通のViewを持っています。ユーザーがボタンをクリックすると、アクション作成者が呼び出され、GETリクエストがWebサービスに送信されます。 webservicesは、次のナビゲータシーンに渡す必要がある、事前に塗りつぶされたオブジェクトを返します。 reduxを使用してください - 約束が解決した後に行動に頼るのは大丈夫ですか?それとも、私はそれを州から引き抜かなければならないのですか?

ボタンたonPressイベント:

addStory() { 
    this.props.actions.createStory().then((action) => { 
    Actions.editor({ title: action.story.title, action.story }); 
    }); 
} 

アクション作成者:

export function createStorySuccess(story) { 
    return { type: CREATE_STORY_SUCCESS, story }; 
} 

export function createStory() { 
    return dispatch => 
    StoryApi.createStory().then((story) => { 
     return dispatch(createStorySuccess(story)); 
    }).catch((error) => { 
     throw error; 
    }); 
} 
+0

は、「それは」あなたは状態から何を引くでしょうか?何のための行動に頼るのは大丈夫ですか? –

答えて

0

あなたは限り、あなたが約束からすべての可能な結果を​​カバーするようReduxのに頼ることができます。あなたはおそらくあまりにも、ときにアクションをフェッチここで追加する必要が

export function createStorySuccess(story) { 
    return { type: CREATE_STORY_SUCCESS, story }; 
} 

export function createStoryFailure(errorMessage) { 
    return { type: CREATE_STORY_FAILURE, failed: true, errorMessage }; 
} 

export function createStory() { 
    return dispatch => 
    StoryApi.createStory().then((story) => { 
     return dispatch(createStorySuccess(story)); 
    }).catch((error) => { 
     return dispatch(createStoryFailure('Loading the story failed.')); 
    }); 
} 

:私はこれを意味することは、あなたの非同期アクションは次のようになりますので、だけではなく、エラーを投げる、あなたはまた、障害アクションを派遣する必要がある、ということですストーリーが取り出されている。その後

あなたのコンポーネントにこのような何かを行うことができます。

let renderResult; 
if(this.props.failed) { 
    renderResult = <div> {this.props.errorMessage} </div>; 
} else { 
    renderResult = <div> {this.props.story} </div>; 
} 

return (renderResult) 
関連する問題