Создание селектора в Redux не работает - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь создать селектор этого:

const getProducts = (state, { productId }) => {
  let quantity = 0;
  if (state.cart[productId].quantity) {
    quantity = state.cart[productId].quantity;
  }

  return {
    accumulatedPrice:
      state.cart[productId].quantity * state.products[productId].price,
    id: productId,
    image: state.products[productId].image,
    price: state.products[productId].price,
    quantity: quantity
  };
};

Я пытаюсь сделать это с:

const getLineItem = createSelector([getProducts], products =>
  Object.values(products)
);

Но я получаю [] вместо{}

Чего мне не хватает?

1 Ответ

0 голосов
/ 12 июня 2018

Очень грубый пример будет следующим:

const getProducts = (state) => state.products;
const getCart = (state) => state.cart;
const getProductId = (state, props) => props.productId;


const getLineItem = createSelector(
    [getProducts, getCart, getProductId],
    (products, cart, productId) => ({
        accumulatedPrice: cart[productId].quantity * products[productId].price,
        id: productId,
        image: products[productId].image,
        price: products[productId].price,
        quantity: cart[productId].quantity || 0
    })
)

Вы также можете уточнить это, если хотите, и иметь getCartProduct (в сочетании с getProductId), а также getProduct (снова в сочетаниис getProductId), но это должно служить начальным блоком.

...