Use nothing-changed helper in home to prevent unnecessary render

This commit is contained in:
Julia Friesel
2018-10-15 09:34:07 +02:00
parent dca286a1d6
commit 124f6cfce7
3 changed files with 7 additions and 5 deletions
+3 -1
View File
@@ -11,6 +11,7 @@ import { getOrCreateCycleDay, getCycleDaysSortedByDate } from '../db'
import { getFertilityStatusForDay } from '../lib/sympto-adapter' import { getFertilityStatusForDay } from '../lib/sympto-adapter'
import styles from '../styles' import styles from '../styles'
import AppText, { AppTextLight } from './app-text' import AppText, { AppTextLight } from './app-text'
import nothingChanged from '../helpers/db-unchanged'
export default class Home extends Component { export default class Home extends Component {
constructor(props) { constructor(props) {
@@ -32,7 +33,8 @@ export default class Home extends Component {
this.cycleDays.addListener(this.updateState) this.cycleDays.addListener(this.updateState)
} }
updateState = () => { updateState = (_, changes) => {
if (nothingChanged(changes)) return
const prediction = this.getBleedingPrediction() const prediction = this.getBleedingPrediction()
const fertilityStatus = getFertilityStatusForDay(this.todayDateString) const fertilityStatus = getFertilityStatusForDay(this.todayDateString)
this.setState({ this.setState({
+3
View File
@@ -0,0 +1,3 @@
export default function (dbChanges) {
return Object.values(dbChanges).every(changeArray => changeArray.length === 0)
}
+1 -4
View File
@@ -5,6 +5,7 @@ import Moment from 'moment'
import { settings as labels } from '../components/labels' import { settings as labels } from '../components/labels'
import { getOrCreateCycleDay, getBleedingDaysSortedByDate } from '../db' import { getOrCreateCycleDay, getBleedingDaysSortedByDate } from '../db'
import cycleModule from './cycle' import cycleModule from './cycle'
import nothingChanged from '../helpers/db-unchanged'
export default function setupNotifications(navigate) { export default function setupNotifications(navigate) {
Notification.configure({ Notification.configure({
@@ -80,7 +81,3 @@ function setupPeriodReminder() {
} }
} }
} }
function nothingChanged(dbChanges) {
return Object.values(dbChanges).every(changeArray => changeArray.length === 0)
}