How can I pass values from Highcharts event callbacks (click, mouseOver, mouseOut) back to React component member function?How can I pass a parameter to a setTimeout() callback?How to return value from an asynchronous callback function?Sending Ember Highcharts events back to parent componentHighcharts - javascript function on event click gives error e.call is not a functionReact Component, Highstock: Synchronize multiple charts?use on click for pie react-highcharts without overriding default onclick functionreact-jsx-highchart: Capture custom panning event in component based HighchartDynamically update Highcharts chart in reactError: The following params are required: Client ID, Client Secret on clarifai api on React

Do landing gear doors need repairs after a gear gravity deploy landing?

How accurate is the new appraisal system?

Why are some Mac apps not available on AppStore?

I multiply the source, you (probably) multiply the output!

What should I do about my non-English publications when applying to a University in an English-speaking country?

How does Vivi differ from other Black Mages?

Do Milankovitch Cycles fully explain climate change?

SCOTUS - Can Congress overrule Marbury v. Madison by statute?

What happens when a caster loses concentration on a banished creature?

Gas pipes - why does gas burn "outwards?"

Has any object launched from Earth permanently gone into the sun?

How would a village use its river that it shares with another village downstream?

How can I fix a framing mistake so I can drywall?

Why is the Tm defined as the temperature at which 50% of dsDNA has changed into ssDNA?

Tear out when plate making w/ a router

I see your BIDMAS and raise you a BADMIS

CBP interview, how serious should I take it?

I changed a word from a source, how do I cite it correctly?

How would two worlds first establish an exchange rate between their currencies

Dublin to Belfast by bus. Where do I get my passport stamped

2.5 year old daughter refuses to take medicine

Guitar beginner - What does this card show?

Is it appropriate for a professor to require students to sign a non-disclosure agreement before being taught?

What is this dollar sign ($) icon in my Menu Bar?



How can I pass values from Highcharts event callbacks (click, mouseOver, mouseOut) back to React component member function?


How can I pass a parameter to a setTimeout() callback?How to return value from an asynchronous callback function?Sending Ember Highcharts events back to parent componentHighcharts - javascript function on event click gives error e.call is not a functionReact Component, Highstock: Synchronize multiple charts?use on click for pie react-highcharts without overriding default onclick functionreact-jsx-highchart: Capture custom panning event in component based HighchartDynamically update Highcharts chart in reactError: The following params are required: Client ID, Client Secret on clarifai api on React






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








2















I can create a chart and pass a function for the mouseOver event that simply logs the x and y values of the marker that I hover over:



// Works

import React from 'react';
import render from 'react-dom';
import Highcharts from 'highcharts';
import HighchartsReact from 'highcharts-react-official';

class App extends React.Component

render = () =>
const options =
chart:
type: 'spline'
,
title:
text: 'My chart'
,
series: [

data: [1, 2, 1, 4, 3, 6]

],
plotOptions:
series:
point:
events:
mouseOver: function ()
const point = x: this.x, y: this.y ;
console.log(point);





;

return (
<div>
<HighchartsReact highcharts=Highcharts options=options />
</div>
)



render(<App />, document.getElementById('root'));


Ultimately I want to be able to pass that point back to my component and use it elsewhere in my app.



The simple idea of calling a function in my component from within the event does not work -- the this that I pass in the plotOptions no longer refers to my component but to the point in the chart:



// Does not work
// Uncaught TypeError: this.handleMouseOver is not a function

import React from 'react';
import render from 'react-dom';
import Highcharts from 'highcharts';
import HighchartsReact from 'highcharts-react-official';

class App extends React.Component

handleMouseOver = point =>
console.log(`handleMouseOver gets $point`);


render = () =>
const options =
chart:
type: 'spline'
,
title:
text: 'My chart'
,
series: [

data: [1, 2, 1, 4, 3, 6]

],
plotOptions:
series:
point:
events:
mouseOver: function ()
const point = x: this.x, y: this.y ;
this.handleMouseOver(point); <--- not the `this` of my component





;

return (
<div>
<HighchartsReact highcharts=Highcharts options=options />
</div>
)



render(<App />, document.getElementById('root'));


No surprise, the error that I get in the browser when I hover over a point is



Uncaught TypeError: this.handleMouseOver is not a function


Any suggestions?



Thanks.










share|improve this question


























  • One solution I found is to put const foo = this.handleMouseOver; at the start of the render function and call foo(point) in the plotOptions. This avoids using this in the plotOptions to refer to the component. Seems a bit of a cheat, though. Is there something more elegant?

    – Robert
    Mar 28 at 8:18


















2















I can create a chart and pass a function for the mouseOver event that simply logs the x and y values of the marker that I hover over:



// Works

import React from 'react';
import render from 'react-dom';
import Highcharts from 'highcharts';
import HighchartsReact from 'highcharts-react-official';

class App extends React.Component

render = () =>
const options =
chart:
type: 'spline'
,
title:
text: 'My chart'
,
series: [

data: [1, 2, 1, 4, 3, 6]

],
plotOptions:
series:
point:
events:
mouseOver: function ()
const point = x: this.x, y: this.y ;
console.log(point);





;

return (
<div>
<HighchartsReact highcharts=Highcharts options=options />
</div>
)



render(<App />, document.getElementById('root'));


Ultimately I want to be able to pass that point back to my component and use it elsewhere in my app.



The simple idea of calling a function in my component from within the event does not work -- the this that I pass in the plotOptions no longer refers to my component but to the point in the chart:



// Does not work
// Uncaught TypeError: this.handleMouseOver is not a function

import React from 'react';
import render from 'react-dom';
import Highcharts from 'highcharts';
import HighchartsReact from 'highcharts-react-official';

class App extends React.Component

handleMouseOver = point =>
console.log(`handleMouseOver gets $point`);


render = () =>
const options =
chart:
type: 'spline'
,
title:
text: 'My chart'
,
series: [

data: [1, 2, 1, 4, 3, 6]

],
plotOptions:
series:
point:
events:
mouseOver: function ()
const point = x: this.x, y: this.y ;
this.handleMouseOver(point); <--- not the `this` of my component





;

return (
<div>
<HighchartsReact highcharts=Highcharts options=options />
</div>
)



render(<App />, document.getElementById('root'));


No surprise, the error that I get in the browser when I hover over a point is



Uncaught TypeError: this.handleMouseOver is not a function


Any suggestions?



Thanks.










share|improve this question


























  • One solution I found is to put const foo = this.handleMouseOver; at the start of the render function and call foo(point) in the plotOptions. This avoids using this in the plotOptions to refer to the component. Seems a bit of a cheat, though. Is there something more elegant?

    – Robert
    Mar 28 at 8:18














2












2








2








I can create a chart and pass a function for the mouseOver event that simply logs the x and y values of the marker that I hover over:



// Works

import React from 'react';
import render from 'react-dom';
import Highcharts from 'highcharts';
import HighchartsReact from 'highcharts-react-official';

class App extends React.Component

render = () =>
const options =
chart:
type: 'spline'
,
title:
text: 'My chart'
,
series: [

data: [1, 2, 1, 4, 3, 6]

],
plotOptions:
series:
point:
events:
mouseOver: function ()
const point = x: this.x, y: this.y ;
console.log(point);





;

return (
<div>
<HighchartsReact highcharts=Highcharts options=options />
</div>
)



render(<App />, document.getElementById('root'));


Ultimately I want to be able to pass that point back to my component and use it elsewhere in my app.



The simple idea of calling a function in my component from within the event does not work -- the this that I pass in the plotOptions no longer refers to my component but to the point in the chart:



// Does not work
// Uncaught TypeError: this.handleMouseOver is not a function

import React from 'react';
import render from 'react-dom';
import Highcharts from 'highcharts';
import HighchartsReact from 'highcharts-react-official';

class App extends React.Component

handleMouseOver = point =>
console.log(`handleMouseOver gets $point`);


render = () =>
const options =
chart:
type: 'spline'
,
title:
text: 'My chart'
,
series: [

data: [1, 2, 1, 4, 3, 6]

],
plotOptions:
series:
point:
events:
mouseOver: function ()
const point = x: this.x, y: this.y ;
this.handleMouseOver(point); <--- not the `this` of my component





;

return (
<div>
<HighchartsReact highcharts=Highcharts options=options />
</div>
)



render(<App />, document.getElementById('root'));


No surprise, the error that I get in the browser when I hover over a point is



Uncaught TypeError: this.handleMouseOver is not a function


Any suggestions?



Thanks.










share|improve this question
















I can create a chart and pass a function for the mouseOver event that simply logs the x and y values of the marker that I hover over:



// Works

import React from 'react';
import render from 'react-dom';
import Highcharts from 'highcharts';
import HighchartsReact from 'highcharts-react-official';

class App extends React.Component

render = () =>
const options =
chart:
type: 'spline'
,
title:
text: 'My chart'
,
series: [

data: [1, 2, 1, 4, 3, 6]

],
plotOptions:
series:
point:
events:
mouseOver: function ()
const point = x: this.x, y: this.y ;
console.log(point);





;

return (
<div>
<HighchartsReact highcharts=Highcharts options=options />
</div>
)



render(<App />, document.getElementById('root'));


Ultimately I want to be able to pass that point back to my component and use it elsewhere in my app.



The simple idea of calling a function in my component from within the event does not work -- the this that I pass in the plotOptions no longer refers to my component but to the point in the chart:



// Does not work
// Uncaught TypeError: this.handleMouseOver is not a function

import React from 'react';
import render from 'react-dom';
import Highcharts from 'highcharts';
import HighchartsReact from 'highcharts-react-official';

class App extends React.Component

handleMouseOver = point =>
console.log(`handleMouseOver gets $point`);


render = () =>
const options =
chart:
type: 'spline'
,
title:
text: 'My chart'
,
series: [

data: [1, 2, 1, 4, 3, 6]

],
plotOptions:
series:
point:
events:
mouseOver: function ()
const point = x: this.x, y: this.y ;
this.handleMouseOver(point); <--- not the `this` of my component





;

return (
<div>
<HighchartsReact highcharts=Highcharts options=options />
</div>
)



render(<App />, document.getElementById('root'));


No surprise, the error that I get in the browser when I hover over a point is



Uncaught TypeError: this.handleMouseOver is not a function


Any suggestions?



Thanks.







javascript reactjs highcharts this






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 28 at 13:48









Wojciech Chmiel

4,8661 gold badge3 silver badges13 bronze badges




4,8661 gold badge3 silver badges13 bronze badges










asked Mar 28 at 8:00









RobertRobert

7787 silver badges14 bronze badges




7787 silver badges14 bronze badges















  • One solution I found is to put const foo = this.handleMouseOver; at the start of the render function and call foo(point) in the plotOptions. This avoids using this in the plotOptions to refer to the component. Seems a bit of a cheat, though. Is there something more elegant?

    – Robert
    Mar 28 at 8:18


















  • One solution I found is to put const foo = this.handleMouseOver; at the start of the render function and call foo(point) in the plotOptions. This avoids using this in the plotOptions to refer to the component. Seems a bit of a cheat, though. Is there something more elegant?

    – Robert
    Mar 28 at 8:18

















One solution I found is to put const foo = this.handleMouseOver; at the start of the render function and call foo(point) in the plotOptions. This avoids using this in the plotOptions to refer to the component. Seems a bit of a cheat, though. Is there something more elegant?

– Robert
Mar 28 at 8:18






One solution I found is to put const foo = this.handleMouseOver; at the start of the render function and call foo(point) in the plotOptions. This avoids using this in the plotOptions to refer to the component. Seems a bit of a cheat, though. Is there something more elegant?

– Robert
Mar 28 at 8:18













1 Answer
1






active

oldest

votes


















1
















You can achieve it using one of these solutions:



1) save the component reference in the chart object like that:



componentDidMount() 
this.chart = this.refs.chart.chart;
this.chart.component = this;



And use it inside mouseOver callback:



plotOptions: 
series:
point:
events:
mouseOver: function()
const self = this.series.chart.component;
const point =
x: this.x,
y: this.y
;

self.handleMouseOver(point);







Demo:



  • https://codesandbox.io/s/k0o59ljpnr





2) use IIFE to save the reference to the component object and then use it inside mouseOver callback function:



plotOptions: 
series:
point:
events:
mouseOver: (function(self)
return function()
const point =
x: this.x,
y: this.y
;
self.handleMouseOver(point);
;
)(this)






Demo:



  • https://codesandbox.io/s/y0x02o26pz





share|improve this answer

























  • Can the same pattern be followed for on click event instead of mouseover??

    – bubble-cord
    2 days ago











  • Yes, the same pattern can be used for a click event.

    – Wojciech Chmiel
    12 hours ago










Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);














draft saved

draft discarded
















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55392659%2fhow-can-i-pass-values-from-highcharts-event-callbacks-click-mouseover-mouseou%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









1
















You can achieve it using one of these solutions:



1) save the component reference in the chart object like that:



componentDidMount() 
this.chart = this.refs.chart.chart;
this.chart.component = this;



And use it inside mouseOver callback:



plotOptions: 
series:
point:
events:
mouseOver: function()
const self = this.series.chart.component;
const point =
x: this.x,
y: this.y
;

self.handleMouseOver(point);







Demo:



  • https://codesandbox.io/s/k0o59ljpnr





2) use IIFE to save the reference to the component object and then use it inside mouseOver callback function:



plotOptions: 
series:
point:
events:
mouseOver: (function(self)
return function()
const point =
x: this.x,
y: this.y
;
self.handleMouseOver(point);
;
)(this)






Demo:



  • https://codesandbox.io/s/y0x02o26pz





share|improve this answer

























  • Can the same pattern be followed for on click event instead of mouseover??

    – bubble-cord
    2 days ago











  • Yes, the same pattern can be used for a click event.

    – Wojciech Chmiel
    12 hours ago















1
















You can achieve it using one of these solutions:



1) save the component reference in the chart object like that:



componentDidMount() 
this.chart = this.refs.chart.chart;
this.chart.component = this;



And use it inside mouseOver callback:



plotOptions: 
series:
point:
events:
mouseOver: function()
const self = this.series.chart.component;
const point =
x: this.x,
y: this.y
;

self.handleMouseOver(point);







Demo:



  • https://codesandbox.io/s/k0o59ljpnr





2) use IIFE to save the reference to the component object and then use it inside mouseOver callback function:



plotOptions: 
series:
point:
events:
mouseOver: (function(self)
return function()
const point =
x: this.x,
y: this.y
;
self.handleMouseOver(point);
;
)(this)






Demo:



  • https://codesandbox.io/s/y0x02o26pz





share|improve this answer

























  • Can the same pattern be followed for on click event instead of mouseover??

    – bubble-cord
    2 days ago











  • Yes, the same pattern can be used for a click event.

    – Wojciech Chmiel
    12 hours ago













1














1










1









You can achieve it using one of these solutions:



1) save the component reference in the chart object like that:



componentDidMount() 
this.chart = this.refs.chart.chart;
this.chart.component = this;



And use it inside mouseOver callback:



plotOptions: 
series:
point:
events:
mouseOver: function()
const self = this.series.chart.component;
const point =
x: this.x,
y: this.y
;

self.handleMouseOver(point);







Demo:



  • https://codesandbox.io/s/k0o59ljpnr





2) use IIFE to save the reference to the component object and then use it inside mouseOver callback function:



plotOptions: 
series:
point:
events:
mouseOver: (function(self)
return function()
const point =
x: this.x,
y: this.y
;
self.handleMouseOver(point);
;
)(this)






Demo:



  • https://codesandbox.io/s/y0x02o26pz





share|improve this answer













You can achieve it using one of these solutions:



1) save the component reference in the chart object like that:



componentDidMount() 
this.chart = this.refs.chart.chart;
this.chart.component = this;



And use it inside mouseOver callback:



plotOptions: 
series:
point:
events:
mouseOver: function()
const self = this.series.chart.component;
const point =
x: this.x,
y: this.y
;

self.handleMouseOver(point);







Demo:



  • https://codesandbox.io/s/k0o59ljpnr





2) use IIFE to save the reference to the component object and then use it inside mouseOver callback function:



plotOptions: 
series:
point:
events:
mouseOver: (function(self)
return function()
const point =
x: this.x,
y: this.y
;
self.handleMouseOver(point);
;
)(this)






Demo:



  • https://codesandbox.io/s/y0x02o26pz






share|improve this answer












share|improve this answer



share|improve this answer










answered Mar 28 at 13:45









Wojciech ChmielWojciech Chmiel

4,8661 gold badge3 silver badges13 bronze badges




4,8661 gold badge3 silver badges13 bronze badges















  • Can the same pattern be followed for on click event instead of mouseover??

    – bubble-cord
    2 days ago











  • Yes, the same pattern can be used for a click event.

    – Wojciech Chmiel
    12 hours ago

















  • Can the same pattern be followed for on click event instead of mouseover??

    – bubble-cord
    2 days ago











  • Yes, the same pattern can be used for a click event.

    – Wojciech Chmiel
    12 hours ago
















Can the same pattern be followed for on click event instead of mouseover??

– bubble-cord
2 days ago





Can the same pattern be followed for on click event instead of mouseover??

– bubble-cord
2 days ago













Yes, the same pattern can be used for a click event.

– Wojciech Chmiel
12 hours ago





Yes, the same pattern can be used for a click event.

– Wojciech Chmiel
12 hours ago








Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.







Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.




















draft saved

draft discarded















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55392659%2fhow-can-i-pass-values-from-highcharts-event-callbacks-click-mouseover-mouseou%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

1973년 목차 사건 문화 탄생 사망 노벨상 달력 둘러보기 메뉴

SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

인천여자상업고등학교 목차 학교 연혁 설치 학과 학교 동문 참고 자료 각주 외부 링크 둘러보기 메뉴북위 37° 28′ 05″ 동경 126° 37′ 41″ / 북위 37.4680025° 동경 126.6279602°  / 37.4680025; 126.6279602인천여자상업고등학교“인천광역시립학교 설치조례 별표1”인천여자상업고등학교 홈페이지eheh문서를 완성해