我的虚构的redux商店看起来像这样:
// array of temperature measured every 4 hrs
{
temp: [
{ t: 1547078400, c: 15 },
{ t: 1515528000, c: 16 },
{ t: 1515513600, c: 12 },
{ t: 1515499200, c: 10 },
...
{ t: 1546819200, c: 21 },
]
}
我有一个小工具,可让您查看“今天”,“本周”,“本月”测得的最低温度(用户可以通过单击按钮选择范围)
我的重新选择代码如下所示:
// Filter points if the time is within the specified range
const getHistory = (store, range) =>
store.temp.filter(p => p.t < range.to && p.t > range.from);
// Get the points in the range and then find the min
const findMinTemp = (store, range) => createSelector(
[getHistory],
filteredPoints => filteredPoints.reduce(
(minSoFar, point) => point.c < minSoFar.c ? point : minSoFar)
)
)
问题 如果将范围作为道具传递,则上述选择器将起作用。
// Dashboard.js
<MyComponent to={...} from={...} />
// MyComponent.js
const mapStateToProps = (state, props) => ({
min: findMinTemp(state, props)
})
如果范围处于组件的本地状态,该怎么办?我想避免将范围保存在redux存储中。