【问题标题】:Redux mapStateToProps on a array of objects对象数组上的 Redux mapStateToProps
【发布时间】:2018-04-03 21:10:36
【问题描述】:

我有带有 redux mapStateToProps(state) 函数的 Todo 类。 问题是这个类有多个 Todo 对象,每个 Todo 一个。
如何区分不同的 todo?如何找出每个对象的唯一索引?

例如状态

rows: [ { title: 'Todo 1', isDone: true, }, { title: 'Todo 2', isDone: false, }, { title: 'Todo 3', isDone: true, }, ],

【问题讨论】:

  • 任何代码示例?顺便说一句,您始终可以使用 Map 对象,其中路由路径作为键,Todo 对象作为值。
  • 我对你的 Redux 状态的形状有点困惑。你可以发布一个例子吗?哪怕只是伪代码。
  • 有没有机会在创建这些 TODOS 时为其添加 ID?
  • 除非您需要保留重复的 Todos,否则最好使用 state 中的对象而不是数组。

标签: javascript reactjs redux state


【解决方案1】:

您可以使用 nanoid (https://github.com/ai/nanoid) 之类的包来创建一个非常随机的 ID 并为每个任务分配一个 ID。 Nanoid 的碰撞率非常低,因此它比使用 Math.random 或任何此类方法要好。除非您要执行“不重复标题规则”,否则不应将标题作为唯一标识符。

使用唯一 ID 参考,您将能够轻松过滤它们。

const someId = 'asdf';
const rows = [
    {
        id: 'asdf'
    } 
]
const yourTask = rows.filter(row => row.id === someId);

maioman 建议使用对象而不是数组也确实有效。

const rows = {
    'Some Task Name': {
        ...
    },
    someTaskId: {
        name: 'Some Task Name'
    }
};

const yourTask = rows['Some Task Name'];
const otherTask = rows.someTaskId;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2021-10-23
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2018-11-05
    相关资源
    最近更新 更多