diff --git a/public/app/features/dashboard/dashgrid/PanelChrome.tsx b/public/app/features/dashboard/dashgrid/PanelChrome.tsx index 8c7d0453dce..a625e429ab8 100644 --- a/public/app/features/dashboard/dashgrid/PanelChrome.tsx +++ b/public/app/features/dashboard/dashgrid/PanelChrome.tsx @@ -1,5 +1,5 @@ // Libraries -import React, { PureComponent } from 'react'; +import React, { Component } from 'react'; import classNames from 'classnames'; import { Unsubscribable } from 'rxjs'; // Components @@ -51,7 +51,7 @@ export interface State { data: PanelData; } -export class PanelChrome extends PureComponent { +export class PanelChrome extends Component { readonly timeSrv: TimeSrv = getTimeSrv(); querySubscription?: Unsubscribable; @@ -124,6 +124,19 @@ export class PanelChrome extends PureComponent { } } + shouldComponentUpdate(prevProps: Props, prevState: State) { + const { plugin, panel } = this.props; + + // If plugin changed we need to process fieldOverrides again + // We do this by asking panel query runner to resend last result + if (prevProps.plugin !== plugin) { + panel.getQueryRunner().resendLastResult(); + return false; + } + + return true; + } + // Updates the response with information from the stream // The next is outside a react synthetic event so setState is not batched // So in this context we can only do a single call to setState