#reactjs #database-design #react-hooks
Вопрос:
Пользовательский интерфейс:
Ежемесячная таблица. Разные показатели в виде строк. Последняя строка рассчитывается из приведенных выше строк
| Metric | Jan | Feb | Mar | Apr | Mai | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
-------- --------- --------- -------- --------- --------- --------- --------- --------- --------- --------- --------- ---------
| Visits | 1000.00 | 1050.00 | 1102.5 | 1157.63 | 1215.52 | 1276.30 | 1340.12 | 1407.13 | 1477.49 | 1551.36 | 1628.93 | 1710.38 |
| Click | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
| Stream | 100.00 | 105.00 | 110.25 | 115.76 | 121.55 | 127.63 | 134.01 | 140.71 | 147.75 | 155.14 | 162.90 | 171.04 |
- Посещения (базовое значение —
1000
— к которому применяется коэффициент роста —0.05
) - Частота кликов (постоянная)
- Поток (расчет:
Visits * Click
)
Требования:
- Когда базовое значение обновляется, строка обновляется
- Когда строка обновляется, последняя строка пересчитывается заново
- При изменении границ дат размер строки изменяется
Вот мой текущий модальный режим данных
{
name: 'Data Stream',
startDate: '2021-01-01',
endDate: '2021-12-01',
metrics: [
{
type: 'VISIT',
name: 'Visits',
value: 1000,
rate: 0.05,
data: [1000.00,1050.00,1102.5,1157.63,1215.52,1276.30,1340.12,1407.13,1477.49,1551.36,1628.93,1710.38]
},
{
type: 'CLICK',
name: 'Click',
value: 0.1,
data: [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]
}
],
stream: [100.00,105.00,110.25,115.76,121.55,127.63,134.01,140.71,147.75,155.14,162.90,171.04]
}
Проблема:
Я наблюдаю startDate
endDate
, metrics
и stream
На горе
- эффект использования устанавливает значения по умолчанию
Когда значение изменится
- Я обновляю
value
иdata
для данной метрики - Эффект использования с
[metrics]
зависимостью вычисляет массив потоков
Когда меняются даты
- Эффект использования с
[startDate, endDate]
зависимостью пересчитываетdata
поле для каждой метрики
Проблема в том, что при монтировании, metrics
, startDate
и endDate
изменении , эффект использования срабатывает одновременно и data
и stream
get undefined
, null
или [NaN, NaN, ...]
- Is it possible to trigger useEffect in a waterfall mode such as a calculation (e.g. stream) happens once other fields (e.g. data) has been calculated?
- Can you suggest a data model and/or a logic that could make the requirements work for such a case?