Действие не отправляет данные в редуктор - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь отправить извлеченные данные из моего действия в save_user_reducer, но, похоже, это не работает.

В моем журнале консоли я вижу, что идентификатор был получен, но данные не передаются с помощью команды отправки.

Мои действия аутентификации:

    import {AsyncStorage} from 'react-native';
import {Facebook} from 'expo';

import{
  FACEBOOK_LOGIN_SUCCESS,
  FACEBOOK_LOGIN_FAIL,
  TOKEN_RECEIVED,
  SAVE_USER
} from './types';


export const tryGetFacebookToken = () => async dispatch => {
  let token = await AsyncStorage.getItem('fb_token');
  let response = await fetch(`https://graph.facebook.com/me?access_token=${token}&fields=id,name,picture`);
  const { id, picture, name } = await response.json();
  console.log("try facebook get", id);
  if (token) {
      dispatch({ type: TOKEN_RECEIVED, payload: token});
      dispatch({ type: SAVE_USER, payload: {id:id});
      getUserInfo(token, dispatch);
      console.log('got a token');
  }
}



async function getUserInfo(token, dispatch) {

  let response = await fetch(`https://graph.facebook.com/me?access_token=${token}&fields=id,name,picture`);
  const { id, picture, name } = await response.json();
  //console.log('picture' + JSON.stringify(await response.json().picture))
  console.log('the response is id: ' + id + " name " + name);
  return dispatch({ type: SAVE_USER, payload: {id: id} })
}

и save_user_reducer:

import {SAVE_USER} from '../actions/types';

const INITIAL_STATE ={
    id: '',
    name: ''
  }; //empty initial state

export default (state=INITIAL_STATE, action) =>{
  console.log("save reducer called" + action.payload);
  switch(action.type){
    case SAVE_USER:
        return { ...state, [action.payload.prop]: action.payload.value};
    default:
        return state;
  }
};

1 Ответ

0 голосов
/ 29 октября 2018

Я изменил порядок передачи отправки второй функции getInfo (dispatch, token), и она работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...