Improve performance of the map by using Pure Components

This commit is contained in:
uwap 2018-04-15 17:15:11 +02:00
parent 9bd5d5c9c8
commit fe814718eb
6 changed files with 9 additions and 9 deletions

View file

@ -35,7 +35,7 @@ export type AppState = {
mqttConnected: boolean, mqttConnected: boolean,
}; };
class App extends React.Component<AppProps & Classes, AppState> { class App extends React.PureComponent<AppProps & Classes, AppState> {
constructor(props: AppProps & Classes) { constructor(props: AppProps & Classes) {
super(props); super(props);
this.state = { this.state = {
@ -89,11 +89,11 @@ class App extends React.Component<AppProps & Classes, AppState> {
const topic = topics[i]; const topic = topics[i];
const parseValue = this.topics[topic].type; const parseValue = this.topics[topic].type;
const val = parseValue == null ? message.toString() : parseValue(message); const val = parseValue == null ? message.toString() : parseValue(message);
this.setState({mqttState: merge(this.state.mqttState, this.setState({mqttState: Object.assign({}, merge(this.state.mqttState,
{ [topic]: { { [topic]: {
actual: val, actual: val,
internal: keyOf(this.topics[topic].values, val) || val internal: keyOf(this.topics[topic].values, val) || val
}})}); }}))});
} }
} }

View file

@ -22,7 +22,7 @@ export type ControlMapProps = {
state: State state: State
}; };
export default class ControlMap extends React.Component<ControlMapProps> { export default class ControlMap extends React.PureComponent<ControlMapProps> {
constructor(props: ControlMapProps) { constructor(props: ControlMapProps) {
super(props); super(props);
} }

View file

@ -23,7 +23,7 @@ export type SideBarProps = {
export type SideBarState = { export type SideBarState = {
}; };
class SideBar extends React.Component<SideBarProps & Classes, SideBarState> { class SideBar extends React.PureComponent<SideBarProps & Classes, SideBarState> {
constructor(props: SideBarProps & Classes) { constructor(props: SideBarProps & Classes) {
super(props); super(props);
} }

View file

@ -15,7 +15,7 @@ export type TopBarState = {
}; };
export default class TopBar extends React.Component<TopBarProps, TopBarState> { export default class TopBar extends React.PureComponent<TopBarProps, TopBarState> {
constructor(props: TopBarProps) { constructor(props: TopBarProps) {
super(props); super(props);
} }

View file

@ -30,7 +30,7 @@ type UiItemProps<I> = {
}; };
// eslint-disable-next-line flowtype/no-weak-types // eslint-disable-next-line flowtype/no-weak-types
export default class UiItem<I:Object> extends React.Component<UiItemProps<I>> { export default class UiItem<I:Object> extends React.PureComponent<UiItemProps<I>> {
constructor(props: UiItemProps<I>) { constructor(props: UiItemProps<I>) {
super(props); super(props);
} }
@ -236,7 +236,7 @@ export class Progress extends UiControl<UIProgress> {
return [ return [
<ListItemText key="label" secondary={this.props.item.text} />, <ListItemText key="label" secondary={this.props.item.text} />,
<div style={{ flex: "10 1 auto" }} key="progressbar"> <div style={{ flex: "10 1 auto" }} key="progressbar">
<LinearProgress mode="determinate" value={value} /> <LinearProgress variant="determinate" value={value} />
</div> </div>
]; ];
} }

View file

@ -22,7 +22,7 @@ export type UiItemListProps = {
onChangeState: (topic: string, nextState: Actual) => void onChangeState: (topic: string, nextState: Actual) => void
}; };
export default class UiItemList extends React.Component<UiItemListProps> { export default class UiItemList extends React.PureComponent<UiItemListProps> {
constructor(props: UiItemListProps) { constructor(props: UiItemListProps) {
super(props); super(props);
} }