'Unhandled Rejection (TypeError): can't access property "country", this.props is undefined

i'm working on a react app

when run this function by infinite scroll i'll get error

Unhandled Rejection (TypeError): can't access property "country", this.props is undefined

async pageUpdater() {
  let url = `https://newsapi.org/v2/top-headlines?country=${this.props.country}&category=${this.props.category}&apiKey=myapi&page=${this.state.page}&pageSize=${this.props.pageSize}`;
  this.setState({ loading: true })
  await fetch(url).then(response => response.json()).then(data => {
    this.setState({ articles: data.articles, totalResults: data.totalResults, loading: false })
  })
}


Solution 1:[1]

You have to use the arrow function or need to bind the this with this function.

The JavaScript has the function scope and the this pointer is changed on the function scope.

For example-

const pageUpdater = async () => {
 // your code here
}

or

You also could bind the this with the function at the component connstructor.

constructor() {
  this.pageUpdater = this.pageUpdater.bind(this);
}

For more about this read https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Sajeeb Ahamed