Javascript 2重新选择输入选择器共享太多代码。如何重构?
我想根据选定的城市选择车库和零售商 这就是我现在拥有的:Javascript 2重新选择输入选择器共享太多代码。如何重构?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我想根据选定的城市选择车库和零售商 这就是我现在拥有的: const garagesSelector = state => state.garages const retailersSelector = state => state.retailers const selectedCitySelector = state => state.cities.selected const garagesInCitySelector = createSelector( garag
const garagesSelector = state => state.garages
const retailersSelector = state => state.retailers
const selectedCitySelector = state => state.cities.selected
const garagesInCitySelector = createSelector(
garagesSelector,
selectedCity,
(garages, city_id) => garages.filter(garage => garage.city_id === city_id)
)
const retailersInCitySelector = createSelector(
retailersSelector,
selectedCity,
(retailers, city_id) => retailers.filter(retailer => retailer.city_id === city_id)
)
它们基本上是一样的,只是它们操作的项目不同。
我想象一个结构,其中项可以是返回数组的任何选择器
比如:
const inCitySelector = createSelector(
items,
selectedCity,
(items, city_id) => items.filter(garage => item.city_id === city_id)
)
const garagesInCitySelector = inCitySelector(garagesSelector)
const retailersInCitySelector = inCitySelector(retailersSelector)
更新:
const filterByCity = (items, city_id) => item => item.city_id === city_id
const garagesInCitySelector = createSelector(garagesSelector, selectedCity, filterByCity)
const retailersInCitySelector = createSelector(retailersSelector, selectedCity, filterByCity)
但对我来说,代码似乎还是太多了