- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑:添加了 package.json 摘录
我正在尝试在现有的 React 项目中实现 typescript ,但我遇到了 Reselect 的困难图书馆。
Typescript 编译器坚持导入 createSelector 函数的第一个定义并且无法识别我的函数的签名对应于另一个定义。
它导入的定义:
export function createSelector<S, R1, T>(
selector: Selector<S, R1>,
combiner: (res: R1) => T,
): OutputSelector<S, T, (res: R1) => T>;
export function createSelector<S, R1, R2, T>(
selectors: [Selector<S, R1>,
Selector<S, R2>],
combiner: (res1: R1, res2: R2) => T,
): OutputSelector<S, T, (res1: R1, res2: R2) => T>;
// groups.selectors.tsx
import { Selector, createSelector } from 'Reselect';
import { IGroup, IQuestionnaire, IGroupReselect, IState } from '../interfaces';
const getGroups:Selector<IState, IGroup[]> = state => state.groups;
const getQuestionnaires:Selector<IState, IQuestionnaire[]> = state => state.questionnaires;
export const groups = createSelector<IState, IGroup[], IQuestionnaire[], IGroupReselect>(
[getGroups, getQuestionnaires],
(g, q) => {
return g.map(group => Object.assign(
{},
group,
{questionnaires: group.questionnairesIds.map(id => q.find(q => q.id === id))}
));
}
);
{
"compilerOptions": {
"module": "es6",
"target": "es6",
"outDir": ".temp",
"allowSyntheticDefaultImports": true,
"baseUrl": "src",
"noImplicitAny": false,
"sourceMap": false,
"jsx": "preserve",
"strict": true,
"moduleResolution": "node"
},
"exclude": [
"node_modules"
],
"files": [
"typings.d.ts"
]
}
"dependencies": {
"react": "^15.5.4",
"react-dom": "^15.5.4",
"react-redux": "^5.0.5",
"react-router": "^4.1.1",
"react-router-dom": "^4.1.1",
"redux": "^3.6.0",
"redux-devtools-extension": "^2.13.2",
"redux-thunk": "^2.2.0",
"reselect": "^3.0.1"
},
"devDependencies": {
"@types/react": "^15.0.25",
"@types/react-router-dom": "^4.0.4",
"@types/redux-thunk": "^2.1.0",
"typescript": "^2.3.3"
},
最佳答案
我可能错了,但从这里开始
this issue ,这似乎是由语言如何推断您的异构数组引起的[getGroups, getQuestionnaires]
作为数组而不是元组。
强制元组类型的第一个参数将使其工作但会导致不必要的样板
const getGroups:Selector<IState, IGroup[]> = state => state.groups;
const getQuestionnaires:Selector<IState, IQuestionnaire[]> = state =>
state.questionnaires;
const selectors: [Selector<IState, IGroup[]>, Selector<IState, IQuestionnaire[]>] = [getGroups, getQuestionnaires]
export const groups = createSelector<IState, IGroup[], IQuestionnaire[], IGroupReselect>(
selectors,
(g, q) => {
return g.map(group => Object.assign(
{},
group,
{questionnaires: group.questionnairesIds.map(id => q.find(q => q.id === id))}
));
}
);
关于reactjs - 为 Reselect createSelector 函数分配正确的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289468/
我想使用 reselectJS 组合选择器,但我的代码看起来与示例中的有点不同,想知道我是否正确使用了该库? const makeSelectCurrentPosition = () => cre
假设我们有一个简单的 redux 存储: { user: { age: 10 } } 我们有一个选择器来获取用户: const getUser = state => state.get
我在我的 React 项目中使用 reselect 库。 我创建了工作正常的 Posts 选择器。这是代码 // selectors.ts const getPosts = (state: RootS
下面的代码片段有什么作用?取自此 file . export const getCollectionLoading = createSelector(getCollectionState, fromC
我用 redux-toolkit至 generate selectors .我想在我自己的自定义中使用它们 reselect带参数的选择器。但是我不知道如何输入我的选择器的返回类型? const se
The React-Redux documentation provides this example for when a selector is used in multiple componen
编辑:添加了 package.json 摘录 我正在尝试在现有的 React 项目中实现 typescript ,但我遇到了 Reselect 的困难图书馆。 Typescript 编译器坚持导入 c
使用 provide mockStore 时,我的功能/选择器函数只会将状态视为未定义。 因此,我只能模拟选择器,因此无法执行更完整的集成测试。 选择器是否不应该看到由模拟商店提供的状态,或者这应该有
使用 provide mockStore 时,我的功能/选择器函数只会将状态视为未定义。 因此,我只能模拟选择器,因此无法执行更完整的集成测试。 选择器是否不应该看到由模拟商店提供的状态,或者这应该有
我有以下案例: const firstSelector = (store, userId) => { ... }; const secondSelector = (store, moneyId) =>
我的商店中有一个非常简单的状态: const state = { records: [1,2,3], }; 我有一个记录选择器: export const getRecords = createSe
我一直在阅读ngrx示例应用程序的代码并找到两个函数调用 createFeatureSelector('auth'); 和 createSelector(selectAuthState,(state:
据我所知,用于重新选择的 .d.ts 文件 ( https://github.com/reactjs/reselect ) 是正确的。那么这是怎么回事……是 Typescript 编译器的问题吗?我的
我刚遇到 custom selectors @ngrx 的作者,我根本不会对这个功能感到惊讶。 根据他们对 selectedUser 的 books 使用案例,我无法给出使用自定义选择器的真正充分理由
我正在尝试创建一个简单的选择器以通过 visitor_id 获取存储中的所有消息然而,在 ngrx 中实现看起来如此简单的事情总是具有挑战性。 我正在使用 ngrx 实体,所以我已经有了 select
所以,我使用 redux , 和 reselect工具 createSelector在 mapStateToProps 中记住我的选择器,而且很棒。 现在,我的商店中有一些标准化数据,以及一个需要来自
我的 redux store 有两个独立的 slice A 和 B, 我需要一个内存的选择器,它返回从 B 派生的东西,只有当 A 发生变化时。 例如 const getSliceA = (state
嗨伟大的互联网头脑, 我正在尝试了解 ngrx 选择器的高级用途并努力消化这篇文章:ngrx selectors 有一些示例展示了 createSelctors 和一些纯 rxjs 魔法。使用一个与另
我想创建一个 memoized 选择器,它会在 redux 存储中的状态发生变化时自动更新。 我读过关于重新选择的 createSelector这里: https://redux.js.org/rec
我是 Redux 和 Redux 工具包的新手。我了解到 createSelector可以接受多个输入选择器,它们可以作为单独的参数或数组提供。所有输入选择器的结果作为单独的参数提供给输出选择器。 c
我是一名优秀的程序员,十分优秀!