当参数不执行时,用其他选择器重新选择选择器

时间:2017-06-22 21:32:09

标签: javascript reactjs react-native reselect

我正在尝试使用重新选择选择器作为另一个选择器的参数:

import { createSelector } from 'reselect'


const productsSelector = state => {
  return state.get('searchResults').get('products')
}

export const getSelectedProduct = createSelector(
  productsSelector,
  (products) => {
    const selected = products.filter(product => product.shop.selected)
    return selected[0]
  }
)

export const getSelectedProductProduct = createSelector(
  getSelectedProduct,
  prod => {
    const x = prod ? prod.products ? prod.products.find(produc => produc.selected) : getSelectedProduct : {}
    if(prod) {
      console.log(prod)
      if ('prod', prod.products) {
        console.log(prod.products)
        if (prod.products.find(produ => produ.selected)) {
          console.log('sel prod', prod.products.find(produ => produ.selected))
        }
      }
    }

    console.log(x)
  }
)

getSelectedProduct正在工作,并在更新时进行更新。但是getSelectedProductProduct没有执行。我做错了什么?

它们用在一个组件中:

const mapStateToProps = (state) => ({
  region: state.get('map').get('region'),
  markers: state.get('searchResults').get('products'),
  selectedProduct: getSelectedProduct(state),
  selectedProductProduct: getSelectedProductProduct(state)
})

动作差异

enter image description here

还原状态

enter image description here

导致顶部图像中的差异的redux操作不会导致getSelectedProductProduct执行。我不认为该组件知道其字段已更改。我正在进一步调查这个问题。想知道该字段是否嵌套太深,以便组件注册更改。

0 个答案:

没有答案