Правильная модель данных для компонента баланса банка React - PullRequest
0 голосов
/ 14 октября 2018

У меня есть простое приложение банковского баланса со следующими данными в состоянии для транзакций:

[
  { date: '2018-10-01', amount: 45.21, type: 'withdrawal', label: 'groceries' },
  { date: '2018-10-04', amount: 212.21, type: 'deposit', label: 'cheque' },
  { date: '2018-10-06', amount: 49.95, type: 'withdrawal', label: 'gas bill' },
]

Затем я перебираю диапазон дат, используя date-fns, и проверяю транзакции:

eachDays(startDate, endDate, 1).map(date => {
  return <DayComponent transactions={this.state.transactions.filter(t => isSameDay(t.date, date))} />
})

У меня есть баланс, сохраненный в состоянии, и я могу рассчитать его в любой момент времени, но там, где я застреваю, я могу показать, что баланс увеличивается или уменьшается ежедневно:

Oct 1 - balance: 100
-----------------------
Oct 2 - balance: 100
-----------------------
Oct 3 - balance: 100
-----------------------
Oct 4 - balance: 312.21
-----------------------
Oct 5 - balance: 312.21
-----------------------
Oct 6 - balance: 262.26

Я могу добиться этого, если DayComponent выполняет итерацию транзакций и рассчитывает собственный баланс, но это кажется плохим подходом, поскольку количество транзакций и количество дней влияют на производительность.

IРассматривается расчет и хранение баланса за каждый день вместе с данными транзакций, но тогда это становится значительно более сложным, если я добавляю транзакцию, и все остатки за день необходимо пересчитать.

Мне интересно, есть ли модель данныхэто будет хорошо работать для этого - я рассмотрел связанный список или использование генераторов, но я не уверен, как ониХорошо, посмотрите в коде.

...