Мой вымышленный магазин редуксов выглядит так:
// 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)
})
Что мне делать, если диапазон находится в локальном состоянии моего компонента? Я хочу избежать сохранения диапазона в магазине приставок.