Вложенная функция отправки не получает реквизиты обновления - PullRequest
0 голосов
/ 09 января 2020

приложение. js

const mapStateToProps = (state) => {
    return {home:state}
}

const mapDispatchToProps = (dispatch) => {
    return {
        guestLogin: (data)=>{dispatch(guestLogin(data)).then(()=>{
            dispatch(initiateTrans(stateProps.home))
        })},
    };
}

const mergeProps = (stateProps, dispatchProps, ownProps) => {
    return Object.assign({}, ownProps, stateProps, dispatchProps,{
        initiateTrans: () => dispatchProps.initiateTrans(stateProps.home),
    })
}


Действие. js

export const guestLogin= (state)=>{
    var data={
        'email':state.email,
        'name':state.name,
        'phone_number':state.ph_number,
        'phone_code':state.country_code
    }
    return function(dispatch) {
        return dataservice.guestSignup(data).then(res => {
            dispatch(afterLoggedGuest(res))
        }).catch(error => {
            throw(error);
        });
    }
}


function afterLoggedGuest(result) {    
    return {type: guestLoginChange, result};
}


export const initiateTrans= (updatedState)=>{    
    return function(dispatch) {
        return dataservice.initiateTransaction(updatedState).then(res => {
            console.log("initiateTransaction",res)
        }).catch(error => {
            throw(error);
        });
   }
}

Редуктор. js

if(action.type === guestLoginChange){
        return {
            ...state,guestData: {
                ...state.guestData,
                Authorization: action.result.authentication ,
                auth_token: action.result.auth_token ,
                platform: action.result.platform
            } ,                  
        }        
  }

У меня два api запросы .. После первого успешного запроса API я хочу обновить значение состояния, а затем передать это обновленное состояние в другой запрос API.

Я попытался получить обновленные реквизиты, как отправить initiateTrans с реквизитами обновления, которые мне нужно обновить значение при успешном запросе API в обратном вызове мне нужно вызвать еще один запрос с обновленным значением состояния

в настоящее время я не могу получить значение реквизита обновления

1 Ответ

0 голосов
/ 09 января 2020

Я думаю, что это хороший вариант использования thunk ( redux-thunk ), который является промежуточным программным обеспечением, позволяющим выполнять несколько отправок в действии.

Вам потребуется применить промежуточное ПО при настройке исходного хранилища (см. Документацию по ссылке выше). Но затем в своих действиях вы можете заключить код в оператор возврата отправки, который дает вам доступ к нескольким вызовам. Например:

export const guestLogin= (state)=>{
    return dispatch => {    
        var data={...} // some data in here
        return dataservice.guestSignup(data).then(res => {
            dispatch(afterLoggedGuest(res))
        }).catch(error => {
            throw(error);
            // could dispatch here as well...
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...