Overridden shouldComponentUpdate() should not always return a truthy value

  • REACT_USELESS_SHOULD_COMPONENT_UPDATE
  • Code Quality
  • Low
  • react

This rule applies when an overridden shouldComponentUpdate() method always returns a truthy value.

Since shouldComponentUpdate() defaults to true, it is useless if the overridden shouldComponentUpdate() method always returns a truthy value.

In this case, shouldComponentUpdate() method's logic is probably wrong by a developer's mistake or misunderstanding of the method.

Noncompliant Code Example

View with compliant examples side by side
import React from 'react';

export class Hello extends React.Component {
    constructor(props) {
        super(props);
        this.state = { greetName: 'Hi' };
        this.handleClick = this.handleClick.bind(this);
    }
    handleClick() {
        this.setState({ greetName: 'Bye' });
    }
    shouldComponentUpdate(nextProps, nextState) { // REACT_USELESS_SHOULD_COMPONENT_UPDATE alarm because this always returns true.
        if (nextState.greetName !== this.state.greetName) {
            return true;
        }
        return true;
    }
    render() {
        return <div onClick={this.handleClick}>{this.state.greetName}</div>;
    }
}

Compliant Code Example

View with noncompliant examples side by side
import React from 'react';

export class Hello extends React.Component {
    constructor(props) {
        super(props);
        this.state = { greetName: 'Hi' };
        this.handleClick = this.handleClick.bind(this);
    }
    handleClick() {
        this.setState({ greetName: 'Bye' });
    }
    shouldComponentUpdate(nextProps, nextState) {
        if (nextState.greetName !== this.state.greetName) {
            return true;
        }
        return false;
    }
    render() {
        return <div onClick={this.handleClick}>{this.state.greetName}</div>;
    }
}

Version

This rule was introduced in DeepScan 1.4.0-beta.

See

Was this documentation helpful?