From 10627b7ffb5628530e294114d503b54bf6233c02 Mon Sep 17 00:00:00 2001 From: Hossein Dehnokhalaji Date: Tue, 5 Mar 2019 03:43:53 +0000 Subject: [PATCH] Fixes #39 - Avoid unnecessary re-renders of context Consumers --- src/SnackbarProvider.js | 48 +++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/src/SnackbarProvider.js b/src/SnackbarProvider.js index 0202e4a1..7ebf646b 100644 --- a/src/SnackbarProvider.js +++ b/src/SnackbarProvider.js @@ -1,4 +1,4 @@ -import React, { Component, Fragment } from 'react'; +import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { SnackbarContext, SnackbarContextNext } from './SnackbarContext'; import { TRANSITION_DELAY, TRANSITION_DOWN_DURATION, MESSAGES } from './utils/constants'; @@ -7,9 +7,16 @@ import warning from './utils/warning'; class SnackbarProvider extends Component { - state = { - snacks: [], - }; + constructor(props) { + super(props); + this.state = { + snacks: [], + contextValue: { + handleEnqueueSnackbar: this.handleEnqueueSnackbar, + handleCloseSnackbar: this.handleDismissSnack, + }, + }; + } queue = []; @@ -210,28 +217,23 @@ class SnackbarProvider extends Component { render() { const { children, maxSnack, dense, ...props } = this.props; - const { snacks } = this.state; + const { contextValue, snacks } = this.state; return ( - - - {children} - {snacks.map((snack, index) => ( - - ))} - + + {children} + {snacks.map((snack, index) => ( + + ))} );