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

2023-12-21

我无法传递变量ownProps from mapStateToProps到选择器。我的选择器:

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

const mapStateToProps = (state, ownProps) => ({
    disabledAfterSave: nameSelector(state)
});

我需要一个选择器:

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

const mapStateToProps = (state, ownProps) => ({
    disabledAfterSave: nameSelector(state, ownProps)
});

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

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

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

返回的类型不是 bool 而是[Function selector]。 如何将此参数传递给我的选择器?


以下是修复选择器及其用法的方法:

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

const mapStateToProps = (state, ownProps) => ({
  disabledAfterSave: nameSelector(state, ownProps)
})

这是一个通用的工作示例,以说明如何将 props 传递给选择器:

const createSelector = Reselect.createSelector

// Selector: Get Active Users
const getUsers = createSelector([state => state.users], users => users.filter(u => u.active))

// Selector: Get Active Users by Country
// Here you can check how I pass the country prop
const getUsersByCountry = createSelector([getUsers, (state, props) => props.country],
 (users, country) => users.filter(u => u.country === country))

// The state
const state = {
  users: [
    { id: 1, name: 'Jordan', country: 'Bulgaria', active: true},
    { id: 2, name: 'Nadezhda', country: 'Bulgaria', active: true},
    { id: 3, name: 'Hristo', country: 'Bulgaria', active: false},
    { id: 4, name: 'Bobby', country: 'England', active: true},
    { id: 5, name: 'Kaloyan', country: 'Germany', active: true},
  ]
}

// Testing
console.log(getUsers(state))
console.log(getUsersByCountry(state, { country: 'Bulgaria' }))
<script src="https://cdnjs.cloudflare.com/ajax/libs/reselect/3.0.1/reselect.min.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redux - 将 ownProps 参数传递给选择器 的相关文章

随机推荐

  • response.sendRedirect 在 Struts2 磁贴中不起作用

    我正在开发一个带有tiles的struts2项目 其中我想使用关键字从一个jsp页面重定向到另一页面 如下所示 在正常的 jsp 页面中 代码的工作方式如下 response sendRedirect search jsp 但当我与瓷砖一起
  • fedora 上 mariadb 的默认密码是多少?

    我刚才通过yum安装了mysql 操作系统fedora为我安装了mariadb 我知道mariadb是mysql的一个新分支 但我不明白为什么它不要求我设置密码 我尝试过123456等等 但都失败了 我的fedora是新的 这是第一次安装m
  • 架构armv7的未定义符号?这个错误是什么意思?

    我刚刚将所有 CocoaAsyncSocket 代码标记为非 ARC 代码 它给了我以下 3 个错误 Undefined symbols for architecture armv7 kCFStreamNetworkServiceTypeV
  • 我应该最小化 docker 层的数量吗?

    The 文档 https docs docker com engine userguide eng image dockerfile best practices 没有详细阐述这个主题 它说 尽量减少层数 Docker 17 05 之前 甚
  • Ajax 提交后强制下载 TCPDF 创建的 PDF

    我的应用程序允许用户填写表单 并通过 Ajax post 调用发送它 表单 si 发送到创建 PDF 文件的 TCPDF 类 该类具有 gt output 方法 允许将文件保存到 Web 服务器中 将其发送到浏览器 等等 我的目标是 在表单
  • 如何从符号数值转换为二进制补码

    我如何从符号大小转换为二进制补码 我不知道从哪里开始 任何帮助 将不胜感激 我只能使用以下操作 gt gt sm2tc Convert from sign magnitude to two s complement where the MS
  • 如何在没有 UBO 的情况下进行批处理?

    我正在尝试为 WebGL 渲染器实现批处理 由于绘制调用过多 该渲染器正在处理大量小对象 我的想法是 我将按照它们使用的着色器类型对它们进行批处理 然后一次绘制一些 上传每个对象的材质参数和模型矩阵一次 我的问题是 非 UBO 制服的制服尺
  • 使用 PyPlot 绘制平滑线

    我有以下绘制图表的简单脚本 import matplotlib pyplot as plt import numpy as np T np array 6 7 8 9 10 11 12 power np array 1 53E 03 5 9
  • 为什么调试器不在断点处停止?

    我遇到的问题是 每次执行某个函数时 JS 的 chrome 调试器都不会停止 我尝试过调试器 还可以通过在左侧行旁边的装订线上放置一个蓝色标签来设置我希望代码停止的断点 任何想法为什么会发生这种情况 如果没有明确的复制计划 就很难判断为什么
  • Telerik_Web_UI_WebResource_axd 问题

    当我运行我的网站时 我收到以下错误消息 无法添加类型为 add 的重复集合条目 且唯一键属性 名称 设置为 Telerik Web UI WebResource axd 这是 web config 的内容
  • 使用 jQuery 或 JavaScript 绑定到自定义 CSS 动画结束事件?

    我们对同一个对象有多个动画 当每个动画结束时 我们需要采取不同的操作 现在 我们绑定到webkit动画结束事件 并使用粗糙的 if then 语句以不同的方式处理每个动画 有没有一种方法可以本质上创建自定义webkit动画结束事件 允许我们
  • 记忆游戏图形java

    我正在编写一个 4x4 记忆游戏程序 这 16 个盒子里有一对 0 到 7 的整数 我已经将所有这些都随机化并正确编码了 现在我试图弄清楚每次鼠标单击该框时如何将颜色与相应的整数配对 这里是大部分代码 我知道这个游戏的逻辑还没有开始 但我现
  • 如何在Python中绘制簇?

    我正在使用 python sklearn cluster 进行聚类 我有 61 个数据 每个数据的维度都是 26 原始数据 UserID Communication dur Lifestyle dur Music Audio dur Oth
  • 如何拒绝 IP 上的 HTTPS 请求并仅允许域名?

    我如何停止 Windows Server 2008 R2 IIS 7 来响应 IP 上的 HTTPS 请求 我只想允许它仅使用域名 示例 https ipaddress 阻止 https domain com 允许 None
  • 执行两个线程,在主线程继续运行时等待另一个线程

    如何启动两个线程 其中线程 1 首先执行 线程 2 在线程 1 结束时启动 而主方法线程可以继续其工作而无需锁定其他两个线程 我已经尝试过 join 但是它需要从必须等待另一个的线程调用 没有办法做像 thread2 join thread
  • 如何求解形式幂级数中的微分方程?

    我想要由微分方程隐式定义的形式幂级数的前几个系数 Example import sympy as sp sp init printing math as latex from IPython display import display z
  • 如何在解析的 Jenkinsfile 变量末尾去除某种形式的换行符

    我想在 Jenkinsfile 的阶段之间传递变量 并按照人们的建议进行操作 通过写入文件然后解析它 stage 1 steps sh echo value gt var txt script VALUE readFile var txt
  • 如何阻止 iframe cookie?

    有没有办法阻止 iframe cookie 该解决方案不应该特定于浏览器 我必须根据他 她的同意允许 阻止第三方 cookie 下载到用户系统 有什么办法可以做到这一点吗 使用javascript 您只能访问在您的域和路径中有效的cooki
  • PHP 中的日期函数总是给出晚一天的日期

    我的情况是日期总是晚一天 例如我有这个值 243219600这是相对于日期的1962年4月18日 After a date d m Y 243219600 输出是 17 04 1962 243219600自 1970 年 1 月 1 日 0
  • Redux - 将 ownProps 参数传递给选择器

    我无法传递变量ownProps from mapStateToProps到选择器 我的选择器 export const nameSelector createSelector state gt state element get name