2017-01-26 20 views
2

У меня есть компонент, называемый Логин, и эти селекторы:substate.get() не является функцией с помощью React шаблонный

const selectLogin =() => (state) => state.get('login'); 
const selectUser =() => createSelector(
    selectLogin(), 
    (loginState) => loginState.get('user') 
); 

Вот что состояние похоже на «Вход» компонента:

login: { 
    user: { 
     id: 206 
    } 
} 

В другом компоненте я хочу выбрать «пользовательский» объект.

В верхней части моего файла, у меня есть

import { createStructuredSelector } from 'reselect'; 

import { 
    selectLogin, 
    selectUser 
} from 'containers/Login/selectors'; 

const mapStateToProps = createStructuredSelector({ 
    login: selectLogin(), 
    user: selectUser(), 
}); 

Когда я использую "selectUser()", я получаю "loginState.get не является функцией".

Если я удалю все ссылки на «selectUser()», я могу получить доступ к этому .props.login.user. Это работает для меня, но я хочу знать, почему я не могу выбрать из состояния «входа». В примерах используется одно и то же соглашение «подстанции» в селекторе, и они работают. Есть идеи?

ответ

1

Это другой компонент в другом маршруте?

Вам необходимо вручную вводить редукторы и саги, необходимые для страницы в каждом маршруте.

В route.js, loadReducer и ввести его на страницу, что-то вроде этого:

{ 
      path: '/projects/add', 
      ... 
      getComponent(nextState, cb) { 
       const importModules = Promise.all([ 
        System.import('containers/Project/reducer'), 
        System.import('containers/Login/reducer') 
        ... 
       ]); 

       const renderRoute = loadModule(cb); 

       importModules.then(([projectReducer, loginReducer ...]) => { 
        injectReducer('projects', projectReducer.default); 
       injectReducer('login', projectReducer.default); 
        renderRoute(component); 
       }); 

       importModules.catch(errorLoading); 
      }, 
+0

Наконец вернулся к этому. Я решил поместить необходимую информацию в глобальное состояние и использовать глобальный селектор. Таким образом, я могу просто включить селектор приложений. Большое спасибо. – jbsmoove

 Смежные вопросы

  • Нет связанных вопросов^_^