gajus / gajus/redux-immutable

State is undefined, can not get initial state

Open
#64 2 comments 0 reactions 0 assignees View on GitHub
question
Dominant language
TypeScript
Stars
1.9k
Forks
84
PR merge metrics
No merged PRs in 30d

Description

Hi guys,

i'm trying implement redux immutable in my project but i got stuck at connect mapStateToProps because the state returned from redux is Map object from ImmutableJS and i can not access user property also other properties in state by `state.user` or `state.get('user')` . So i posted my code here and need some advice from you guys, thanks in advance! Here is my code:

**folder: store/configureStore.js**

```

"use strict";

import {applyMiddleware, createStore} from 'redux';
import thunk from 'redux-thunk';
var promise = require('./promise');
var array = require('./array');
import rootReducers from '../reducers';
var createLogger = require('redux-logger');
var {AsyncStorage} = require('react-native');
import Immutable from 'immutable';

var isDebuggingInChrome = __DEV__ && !!window.navigator.userAgent;
const initialState = Immutable.Map({
user: {
isLoggedIn: false,
username: null,
session_id: null,
name: null,
uid: null
}
});

var logger = createLogger({
predicate: (getState, action) => isDebuggingInChrome,
collapsed: true,
duration: true,
});

var createCassiStore = applyMiddleware(thunk, promise, array, logger)(createStore)

function configureStore(onComplete: ?()=> void) {
const store = createCassiStore(rootReducers, initialState);
if (isDebuggingInChrome) {
window.store = store;
}
return store;
}

module.exports = configureStore;
```

**folder: reduders/user.js**

```
'use strict'

import { createReducer } from 'redux-immutablejs'
import { fromJS } from 'immutable'

const initialState = fromJS({
isLoggedIn: false,
name: null,
session_id: null,
email: null,
uid: null,
})

const user = createReducer(initialState, {
'LOGGED_IN': (state, action) => state.merge({
user: {
isLoggedIn: true,
...action.data
}
})
});

module.exports = user

```

**folder reducers/index.js**

```
'use strict'

import {combineReducers} from 'redux-immutablejs';
import {reducer as formReducer} from 'redux-form/immutable';
import {userReducer} from './user';

export default combineReducers({
form: formReducer,
user: userReducer
});

```

**folder components/MyNavigator.js**

```
import { connect } from 'react-redux';
import React from 'react';
class MyNavigator extends React.Component {
render() {
return (

);
}

renderScene(route, navigator) {
if(route.signup)
return
if(route.home)
return
return
}
}
const mapStateToProps = state => {
return {
isLoggedIn: state.user.isLoggedIn || false // error here cannot get user of undefined
}
}

module.exports = connect(mapStateToProps)(MyNavigator);

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.