@@ -3,6 +3,7 @@ import cn from 'classnames'
33import raf from 'dom-helpers/util/requestAnimationFrame'
44import React , { Component } from 'react'
55import { findDOMNode } from 'react-dom'
6+ import memoize from 'memoize-one'
67
78import dates from './utils/dates'
89import DayColumn from './DayColumn'
@@ -65,8 +66,6 @@ export default class TimeGrid extends Component {
6566 this . state = { gutterWidth : undefined , isOverflowing : null }
6667
6768 this . scrollRef = React . createRef ( )
68-
69- this . resources = Resources ( props . resources , props . accessors )
7069 }
7170
7271 componentWillMount ( ) {
@@ -95,6 +94,7 @@ export default class TimeGrid extends Component {
9594 raf . cancel ( this . rafHandle )
9695 this . rafHandle = raf ( this . checkOverflow )
9796 }
97+
9898 componentWillUnmount ( ) {
9999 window . removeEventListener ( 'resize' , this . handleResize )
100100
@@ -144,9 +144,10 @@ export default class TimeGrid extends Component {
144144 renderEvents ( range , events , now ) {
145145 let { min, max, components, accessors, localizer } = this . props
146146
147- const groupedEvents = this . resources . groupEvents ( events )
147+ const resources = this . memoizedResources ( this . props . resources , accessors )
148+ const groupedEvents = resources . groupEvents ( events )
148149
149- return this . resources . map ( ( [ id , resource ] , i ) =>
150+ return resources . map ( ( [ id , resource ] , i ) =>
150151 range . map ( ( date , jj ) => {
151152 let daysEvents = ( groupedEvents . get ( id ) || [ ] ) . filter ( event =>
152153 dates . inRange (
@@ -233,7 +234,7 @@ export default class TimeGrid extends Component {
233234 getNow = { getNow }
234235 localizer = { localizer }
235236 selected = { selected }
236- resources = { this . resources }
237+ resources = { this . memoizedResources ( resources , accessors ) }
237238 selectable = { this . props . selectable }
238239 accessors = { accessors }
239240 getters = { getters }
@@ -314,4 +315,6 @@ export default class TimeGrid extends Component {
314315 } )
315316 }
316317 }
318+
319+ memoizedResources = memoize ( ( resources , accessors ) => Resources ( resources , accessors ) )
317320}
0 commit comments