Как обратиться к нужному контексту?

202
15 марта 2018, 11:35

В библиотеке react-highcharts конфиг позволяет реализовывать ивенты по клику. Происходит это так:

plotOptions: {
                series: {
                    stacking: 'normal',
                    cursor: 'pointer',
                    allowPointSelect: true,
                    point: {
                        events: {
                            click:  function () {  
                            this.props.chartMeasureClick(this.series.options.id);
                            }
                        }
                    }
                }
            },

И ействительно при клике в данном случае я получаю нужный this.series.options.id , однако метод this.props.chartMeasureClick является undefined. Почитав гуггл, решение нашлось переделать function (){} в ()=>{} и действительно, ошибка исчезла, НО теперь this.series.options.id = undefined , потому что this ссылается на контекст уровнем выше(на саму компоненту). Как мне достучаться до нужного контекста в данном случае?

Answer 1

Вот тут как раз ваш случай. Попробуйте один из предложенных вариантов: https://github.com/kirjs/react-highcharts/issues/348

Либо попробуйте записать в plotOptions ссылку на this компонента и использовать обычную (не стрелочную функцию). Как-то так:

plotOptions: {
  that: this, // <--- here
  series: {
    ...
    point: {
      events: {
        click: getClickHandler(this)
      }
    }
  }
}

UPDATE

Ещё идея с замыканием:

function getClickHandler(context) {
  var that = context;
  return function () {  
    that.props.chartMeasureClick(this.series.options.id);
  }
}
READ ALSO
Раскодировать UCS2

Раскодировать UCS2

Вот это текст в UCS2:

165
Полноценный аналог .addEventListener() в react?

Полноценный аналог .addEventListener() в react?

Есть ли в реакт аналогaddEventListener()? Задача следующая: есть форма, в форме - инпуты

178
Slick carousel переход на страницу window.location.href не работает

Slick carousel переход на страницу window.location.href не работает

есть карусель на Slick появилась идея при просмотре последнего слайда сделать переход на определённую страницу попробовал такой вариант

204
Показать все метки на Яндекс карте

Показать все метки на Яндекс карте

Для загрузки объектов на карту использую следующий скрипт

174