substate.get() 不是使用 React Boilerplate 的函数
substate.get() is not a function using React Boilerplate
我有一个名为登录的组件,这些 select或:
const selectLogin = () => (state) => state.get('login');
const selectUser = () => createSelector(
selectLogin(),
(loginState) => loginState.get('user')
);
"login" 组件的状态如下:
login: {
user: {
id: 206
}
}
在另一个组件中,我想 select "user" 对象。
在我的文件顶部,我有
import { createStructuredSelector } from 'reselect';
import {
selectLogin,
selectUser
} from 'containers/Login/selectors';
const mapStateToProps = createStructuredSelector({
login: selectLogin(),
user: selectUser(),
});
当我使用 "selectUser()" 时,我得到 "loginState.get is not a function"。
如果我删除所有对 "selectUser()" 的引用,我就可以访问 this.props.login.user。这对我有用,但我想知道为什么我不能 select 从 "login" 状态。这些示例在 selector 中使用相同的 "substate" 约定,并且它们有效。有什么想法吗?
这是另一条路线中的另一个组件吗?
您必须在每个路由中手动注入页面所需的 reducer 和 sagas。
在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);
},
我有一个名为登录的组件,这些 select或:
const selectLogin = () => (state) => state.get('login');
const selectUser = () => createSelector(
selectLogin(),
(loginState) => loginState.get('user')
);
"login" 组件的状态如下:
login: {
user: {
id: 206
}
}
在另一个组件中,我想 select "user" 对象。
在我的文件顶部,我有
import { createStructuredSelector } from 'reselect';
import {
selectLogin,
selectUser
} from 'containers/Login/selectors';
const mapStateToProps = createStructuredSelector({
login: selectLogin(),
user: selectUser(),
});
当我使用 "selectUser()" 时,我得到 "loginState.get is not a function"。
如果我删除所有对 "selectUser()" 的引用,我就可以访问 this.props.login.user。这对我有用,但我想知道为什么我不能 select 从 "login" 状态。这些示例在 selector 中使用相同的 "substate" 约定,并且它们有效。有什么想法吗?
这是另一条路线中的另一个组件吗?
您必须在每个路由中手动注入页面所需的 reducer 和 sagas。
在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);
},