== Why is this an issue?

This rule reports the methods of React component classes which are neither used nor React lifecycle methods. Note that this rule checks only the scope of a component class, which means that issues will be raised on the methods that are only used outside of the class.

Methods that are never executed are dead code: unnecessary, inoperative code that should be removed. Cleaning out dead code decreases the size of the maintained codebase, making it easier to understand the program and preventing bugs from being introduced.

React encourages data-driven components. To modify a child component, re-render it with new `props`.

=== Noncompliant code example

[source,javascript]
----
class Profile extends React.Component {
  render(props) {
    return <h1>{ props.name }</h1>;
  }

  getDefaultName() { // Noncompliant, this method is never used and is a dead code
    return 'John Smith';
  }
}
----

=== Compliant solution

[source,javascript]
----
class Profile extends React.Component {
  render(props) {
    return <h1>{ props.name || getDefaultName() }</h1>;
  }

  getDefaultName() {
    return 'John Smith';
  }
}
----

== Resources

* https://reactjs.org/docs/components-and-props.html[Components and Props] - React Documentation