gpt4 book ai didi

reselect - substate.get() 不是使用 React Boilerplate 的函数

转载 作者:行者123 更新时间:2023-12-02 19:19:00 25 4
gpt4 key购买 nike

我有一个名为 Login 的组件,以及这些选择器:

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()”的引用,我就可以访问 this.props.login.user。这对我有用,但我想知道为什么我无法在“登录”状态下进行选择。这些示例在选择器中使用相同的“子状态”约定,并且它们有效。有什么想法吗?

最佳答案

这是另一个路由中的另一个组件吗?

您必须手动注入(inject)每个路由中页面所需的 reducer 和 sagas。

在route.js中,加载Reducer并将其注入(inject)到页面中,如下所示:

 {
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);
},

关于reselect - substate.get() 不是使用 React Boilerplate 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41880737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com