首页 > 解决方案 > 对象的 Redux 重新选择以字符串为键

问题描述

我在重新选择时无法访问下面的对象,希望有人有一些想法可以帮助我。

const data = state => fruit.selectors.data(state);

This will return an object like this:

{
  "10.Kroger": {
    "fruit": "Banana",
    "price": "10",
    "store": "Kroger",
  },
   "5.Heb": {
    "fruit": "Apple",
    "price": "5",
    "store": "Heb",
  },
   "12.Wallmart": {
    "fruit": "Pineapple",
    "price": "12",
    "store": "wallmart",
  },
}

这是我的 createSelector

export const getFruitData = createSelector(
  data,
  (state, price, store) => price,
  (state, price, store) => store,
  (data, price, store) => data[`${price}.${store}`]
);

我试图通过传入的值来获得动态结果:

data["10.Kroger"] 结果应该取回这个对象:

 {
    "fruit": "Banana",
    "price": "10",
    "store": "Kroger",
 },

是否可以在重新选择中进行这项工作?谢谢您的帮助!

标签: javascriptreactjsecmascript-6reselect

解决方案


您的示例似乎没有从任何记忆层中受益。您可能会考虑reselect省略并编写一个普通的选择器函数,大致如下:

const data = state => fruit.selectors.data(state);

export function getFruitData(state, price, store) {
  const itemData = data(state);
  return itemData[`${price}.${store}`]
};

推荐阅读