@FreeArcher
Senior 1С; php, JS Starter

Почему теряется this?

Приветствую!
У меня теряется this в событии componentDidMount. Всю голову сломал. Я думал, что я понимаю в контексете вызова, но видать нет. Уже просто копирую примеры из интернета, там это рабочие варианты. Все равно this нет.
Подскажите пожалуйста, может я просто туплю?

componentDidMount = () => {
     const myHeaders = new Headers({
      "Content-Type": "application/json",
      Accept: "application/json"
    })

    fetch("http://localhost:3000/bookmarks.json", {
      headers: myHeaders,

    })
      .then(response => {
        console.log(response);
        return response.json();
      })
      .then(data => {
        console.log(data);
        this.setState({ data });
      })

  }
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimakrsna
@dimakrsna
Front-end develorer
Тут хороший ответ на вопрос почему теряется this: https://stackoverflow.com/questions/24785238/this-...

Чтобы заработало, нужно сохранить контекст старым способом: var self = this
и потом при вызове setState обращаться к self

Рабочий код выглядит так:
componentDidMount() {
        const myHeaders = new Headers({
            "Content-Type": "application/json",
            Accept: "application/json"
        })

        var self = this

        fetch("https://jsonplaceholder.typicode.com/todos/1", { // ваш URL
            headers: myHeaders,
        }).then(response => {
            return response.json();
        }).then(data => {
            self.setState({ data });
        })
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы