2017-04-25 4 views
1

私はsagaとreact-nativeを使用しています。要求に応じてアラートをスローしたいと思います。アラートコールバックにアクションを設定する方法と、これを行うためのより良い方法があるかどうかを知りたい。コールバックでのputの使用

function* userRequest(action) { 
    try { 
     const user = yield call(Api.post, Routes.REQUEST_USER, params); 
     yield put({type: types.REQUEST_OK, user: user}); 
    } catch(e) { 
     yield put({type: types.REQUEST_FAILED, user: user}); 
    } 
} 

function* requestOk(action) { 
    Alert.alert(
     'User', 
     'User request ok!', 
     [ 
      //I know this is wrong 
      {text: 'OK', onPress:() => yield put({type: types.NAVIGATION_BACK})}, 
     ], 
     { cancelable: false } 
    ) 
} 

function* userSaga() { 
    yield takeEvery(types.USER_REQUEST, userRequest); 
    yield takeEvery(types.REQUEST_OK, requestOk); 
} 

ありがとう!

+0

あなたがこれを理解できましたでる?私もこれをする必要があります。 – Noitidart

答えて

1

takeEveryは、オプションの引数をとりますので、私はこれを行うための最善の方法は、佐賀を通して、あなたの店を通過した後、あなたの行動を発射するstore.dispatchを使用することです見つけた:

import {createStore} from 'redux'; 
const store = createStore(...) // you'll already have this somewhere 

--- 

function* userSaga(store) { 
    yield takeEvery(types.REQUEST_OK, requestOk, store); 

--- 

function* requestOk(store, action) { // store is now the first arg 
    Alert.alert(
    'User', 
    'User request ok!', 
    [ 
     {text: 'OK', onPress:() => store.dispatch({type: types.NAVIGATION_BACK})}, 
    ], 
    { cancelable: false } 
) 
} 
+0

これは正しい解決策だとは思わない。あなたが見つけたコールバックにputを使用する他の方法はありますか? – Noitidart

関連する問題