相关疑难解决方法(0)

重新选择 - 调用另一个选择器的选择器?

我有一个选择器:

const someSelector = createSelector(
   getUserIdsSelector,
   (ids) => ids.map((id) => yetAnotherSelector(store, id),
);                                      //     ^^^^^ (yetAnotherSelector expects 2 args)
Run Code Online (Sandbox Code Playgroud)

yetAnotherSelector是另一个选择器,它接受用户id - id并返回一些数据.

但是,既然如此createSelector,我就无法访问它(我不希望它作为一个函数,因为memoization不会工作).

有办法在某种程度上访问商店createSelector吗?或者有没有其他方法来处理它?

编辑:

我有一个功能:

const someFunc = (store, id) => {
    const data = userSelector(store, id);
              // ^^^^^^^^^^^^ global selector
    return data.map((user) => extendUserDataSelector(store, user));
                       //     ^^^^^^^^^^^^^^^^^^^^ selector
}
Run Code Online (Sandbox Code Playgroud)

这样的功能正在杀死我的应用程序,导致所有内容重新渲染并让我疯狂.帮助赞赏.

!然而:

我做了一些基本的自定义memoization:

import { isEqual } from 'lodash';

const memoizer = {};
const someFunc = (store, id) => { …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs reselect

11
推荐指数
3
解决办法
5507
查看次数

Avoid re-rendering components using array.map with React+Redux

First of all, I have already gone through:

And have learnt a lot, but still can't figure out how to work out my case.

The Mission

I am doing a music player and I have normalized my store to look like this:

{
    albums : {
        album1 : {
            name  : "...",
            songs : …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs redux react-redux reselect

5
推荐指数
0
解决办法
149
查看次数

Redux - 将 ownProps 参数传递给选择器

我不能传递变量ownPropsmapStateToProps到选择。我的选择器:

export const nameSelector = createSelector(
    [
        state => state.element.get('name')
    ],
    (name) => !name.trim()
);

const mapStateToProps = (state, ownProps) => ({
    disabledAfterSave: nameSelector(state)
});
Run Code Online (Sandbox Code Playgroud)

我需要一个选择器:

export const nameSelector = createSelector(
        [
            state => state.element.get('name')
        ],
        (name, ownProps) => !name.trim() && ownProps.showMessage
    );

const mapStateToProps = (state, ownProps) => ({
    disabledAfterSave: nameSelector(state, ownProps)
});
Run Code Online (Sandbox Code Playgroud)

但现在我收到一个错误:ReferenceError: ownProps is not defined.

当我尝试像下面这样传递它时:

export const nameSelector = (ownProps) => createSelector(
        [
            state => state.element.get('name')
        ],
        (name) => …
Run Code Online (Sandbox Code Playgroud)

redux react-redux reselect

4
推荐指数
1
解决办法
2765
查看次数

标签 统计

reselect ×3

javascript ×2

react-redux ×2

reactjs ×2

redux ×2