Как изменить состояние внутри «нового метода» с помощью Mobx

Я хочу изменить состояние с помощью функции, которая находится в том же хранилище состояний.
Например, у меня есть код, как показано ниже.

import { observable, action } from 'mobx';

export default class AddressTime {
  @observable addressState = {
    departure: {
      road: '',
    }
  };

  departureAddress = () => {
      new window.daum.Postcode({
        oncomplete(data) {

        const roadAddr = data.roadAddress; 

        this.addressState.departure.road = roadAddr;
      })
}

Я могу сделать roadAddr с помощью daum post api. и в методе есть еще одна функция, которая называется oncomplete.
Поэтому, когда я запускаю функцию «departureAddress», которая говорит

TypeError:this.addressState is undefined.

Возможно, эта ошибка возникает из-за ошибки положения this.addressState, которая находится внутри функции одного метода. Не могли бы вы помочь мне с этой проблемой?

PS) Должен ли я использовать действие или вычисление mobx в этом случае для изменения состояния?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

как насчет попробовать это?

import { observable, action } from 'mobx';

export default class AddressTime {
    @observable 
    addressState = {
        departure: {
            road: '',
        }
    };

    @action
    departureAddress = () => {
        const _this = this
        new window.daum.Postcode({
            oncomplete(data) {

                const roadAddr = data.roadAddress; 

                _this.addressState.departure.road = roadAddr;
            }
        })
    }
}

Спасибо! Это работает хорошо. Проблема заключалась в «этом» масштабе!

DD DD 08.04.2019 09:30

рад помочь вам!

kkangil 08.04.2019 09:34

Другие вопросы по теме