Я пытаюсь получить доступ к состоянию из метода в классе (используя react), но всегда, когда я выполняю метод, у меня возникает ошибка.

TypeError: undefined не является объектом (оценивая 'this.state.icos.lastItem.id')

Мой код:

downloadIcos(fromId) {

    fetch(url)
      .then(res => res.json())
      .then((data) => {
        this.setState({ icos: data })
      })
      .catch(console.log)
      
  }

    btnMoreOnClick(){
    alert(JSON.stringify(this.state))
  }
    
render() {
    return (
      
<кнопка onClick={this.btnMoreOnClick} > Больше
); }

Bogus

Ответов: 2

Ответы (2)

Когда вы используете this.setState, у вас должна быть функция-стрелка

downloadIcos = (fromId) => {

    fetch(url)
      .then(res => res.json())
      .then((data) => {
        this.setState({ icos: data })
      })
      .catch(console.log)
      
  }

btnMoreOnClick = (value) => {
return this.downloadIcos()
}

render() {
    return (
      
<кнопка onClick={this.btnMoreOnClick(this.state.icos.lastItem.id)} > Больше
); }

Я наконец-то исправил свой код. Все, что мне нужно, это привязать функцию btnMoreOnClick в конструкторе, как показано ниже.

constructor(props) {
    this.btnMoreOnClick = this.btnMoreOnClick.bind(this)
  }

2022 WebDevInsider