React-родное действие Redux не отправляется

Я нахожусь в процессе переноса приложения из React в React Native и столкнулся с проблемой, когда Redux не отправляет действие в Reducer.

Мой корневой компонент выглядит так:

import React, { Component, PropTypes } from 'react'
import { connect } from 'react-redux';


import Main from '../main/main';

import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';



class App extends Component {
    render() {
        console.log('Rendering root.js component');
        console.log(this.props);
        const { dispatch, isAuthenticated, errorMessage, game, communication } = this.props


        return (
            <View style={styles.appBody}>
                <Main 
                    dispatch={dispatch}
                    game={game}
                    communication={communication}
                />
            </View>
        )
    }
}

App.propTypes = {
    dispatch: PropTypes.func.isRequired,
    isAuthenticated: PropTypes.bool.isRequired,
    errorMessage: PropTypes.string,
}

function mapStateToProps(state) {

    const { auth } = state
    const { game } = state
    const { communication } = state
    const { isAuthenticated, errorMessage } = auth

    return {
        isAuthenticated,
        errorMessage,
        game,
        communication
    }
}

const styles = StyleSheet.create({
  appBody: {
  }
});

export default connect(mapStateToProps)(App)

Затем подкомпонент "лобби" имеет функцию отправки от Redux в качестве пропуска. Этот компонент подключается к отдельному файлу javascript и передает ему реквизиты, чтобы этот отдельный файл имел доступ к функции отправки:

componentWillMount() {
    coreClient.init(this);
}

В этом файле я делаю это:

const init = function(view) {
    socket.on('connectToLobby', (data) => {
        console.log('Lobby connected!');
        console.log(data);

        console.log(view.props) // shows the dispatch function just fine.
        view.props.dispatch(connectLobbyAction(data));
    });
}   

Само действие также показывает консольный журнал, который я помещаю туда, просто он никогда не отправляется.

export const LOBBY_CONNECT_SUCCESS = 'LOBBY_CONNECT_SUCCESS';

export function connectLobbyAction(data) {
    console.log('Action on connected to lobby!')
    return {
        type: LOBBY_CONNECT_SUCCESS,
        payload: data
    }
}

Я чувствую себя немного потерянным, был бы признателен за некоторые отзывы:)

РЕДАКТИРОВАТЬ: Фрагмент редуктора:

var Symbol = require('es6-symbol');

import {
 LOBBY_CONNECT_SUCCESS
} from './../actions/actions'

function game(state = {
  //the state, cut to keep things clear.
}, action) {
switch (action.type) {
case LOBBY_CONNECT_SUCCESS:
    console.log('reducer connect lobby')
    return Object.assign({}, state, {
        ...state,
        user : {
            ...state.user,
            id : action.payload.id,
            connected : action.payload.connected
        },
        match : {
            ...state.match,
            queuePosition : action.payload.position,
            players : action.payload.playerList,
            room : 'lobby'
        },
        isFetching: false,
    })
    default:
        return state
     }
    }
   const app = combineReducers({
    game,
    //etc.
   })

0 ответов

Другие вопросы по тегам