我有一个名为Login的组件,以及这些选择器:
const selectLogin = () => (state) => state.get('login');
const selectUser = () => createSelector(
selectLogin(),
(loginState) => loginState.get('user')
);
这里"登录"状态是什么样的?成分:
login: {
user: {
id: 206
}
}
在另一个组件中,我想选择" user"对象
在我的文件顶部,我有
import { createStructuredSelector } from 'reselect';
import {
selectLogin,
selectUser
} from 'containers/Login/selectors';
const mapStateToProps = createStructuredSelector({
login: selectLogin(),
user: selectUser(),
});
当我使用" selectUser()"时,我得到" loginState.get不是函数"。
如果删除对" selectUser()"的所有引用,我可以访问this.props.login.user。这对我有用,但我想知道为什么我无法从"登录"中进行选择。州。这些例子使用相同的"子状态"选择器中的约定,它们可以工作。有什么想法吗?
答案 0 :(得分: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);
},