When should I use “this” keyword?

To this or not to this?

When you browse through Javascript code, you often see function calls prepended with this. keyword, like this.functionName(). However, sometimes this is missing and it’s just functionName(). What is the difference and when you should use one over the other?

That depends on whether you React component is functional or class-based.

If your component is a class-based component and functionName is a method of that class, then you must address to it as this.functionName. For example:

class App extends React.Component {
  // myFunc is a method of App class
  myfunc() {
    ...
  }

  render() {
    myfunc(); // Error! "myfunc is not defined"
    this.myfunc(); // #ThumbsUp
    ...
  }
}

On the other hand, if your component is functional, then functions you declare inside it do not require this keyword to be addressed to, no matter if they are defined with function keyword or as arrow functions.

const App = () => {
  function myfunc1(){
    ...
  }

  const myfunc2 = () => {
    ...
  }

  myfunc1(); // This works
  myfunc2(); // This works too
  this.myfunc1(); // Error: Cannot read property 'myfunc1' of undefined

  ...
};