Accessing React component params in event handler












0















I'm not sure if I'm going about this the best way, but I am trying to access a React component's param in an onMouseOver event handler.



Event handler:



  handleTabHover = event => {
this.setState({ indicatorColor: event });
};


React component:



  <LinkTab
label="Dashboard"
to="/"
indicatorColor="gray"
onMouseOver={this.handleTabHover}
onFocus={this.handleTabHover}
/>


Basically, I'm expecting that event in the handleTabHover function to be the LinkTab component and then I can access it's "indicatorColor" param to set the class indicatorColor state, but that's not the case. I'm new to React and ES6 syntax so I'm sure I'm missing something fundamental to how event handler parameters work.










share|improve this question

























  • you can use event.target.style to get access to all styling attributes

    – AlbertS
    Nov 23 '18 at 18:00
















0















I'm not sure if I'm going about this the best way, but I am trying to access a React component's param in an onMouseOver event handler.



Event handler:



  handleTabHover = event => {
this.setState({ indicatorColor: event });
};


React component:



  <LinkTab
label="Dashboard"
to="/"
indicatorColor="gray"
onMouseOver={this.handleTabHover}
onFocus={this.handleTabHover}
/>


Basically, I'm expecting that event in the handleTabHover function to be the LinkTab component and then I can access it's "indicatorColor" param to set the class indicatorColor state, but that's not the case. I'm new to React and ES6 syntax so I'm sure I'm missing something fundamental to how event handler parameters work.










share|improve this question

























  • you can use event.target.style to get access to all styling attributes

    – AlbertS
    Nov 23 '18 at 18:00














0












0








0








I'm not sure if I'm going about this the best way, but I am trying to access a React component's param in an onMouseOver event handler.



Event handler:



  handleTabHover = event => {
this.setState({ indicatorColor: event });
};


React component:



  <LinkTab
label="Dashboard"
to="/"
indicatorColor="gray"
onMouseOver={this.handleTabHover}
onFocus={this.handleTabHover}
/>


Basically, I'm expecting that event in the handleTabHover function to be the LinkTab component and then I can access it's "indicatorColor" param to set the class indicatorColor state, but that's not the case. I'm new to React and ES6 syntax so I'm sure I'm missing something fundamental to how event handler parameters work.










share|improve this question
















I'm not sure if I'm going about this the best way, but I am trying to access a React component's param in an onMouseOver event handler.



Event handler:



  handleTabHover = event => {
this.setState({ indicatorColor: event });
};


React component:



  <LinkTab
label="Dashboard"
to="/"
indicatorColor="gray"
onMouseOver={this.handleTabHover}
onFocus={this.handleTabHover}
/>


Basically, I'm expecting that event in the handleTabHover function to be the LinkTab component and then I can access it's "indicatorColor" param to set the class indicatorColor state, but that's not the case. I'm new to React and ES6 syntax so I'm sure I'm missing something fundamental to how event handler parameters work.







javascript reactjs






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 18:14









Adrita Sharma

86921129




86921129










asked Nov 23 '18 at 17:42









gamecockcowboysfangamecockcowboysfan

313




313













  • you can use event.target.style to get access to all styling attributes

    – AlbertS
    Nov 23 '18 at 18:00



















  • you can use event.target.style to get access to all styling attributes

    – AlbertS
    Nov 23 '18 at 18:00

















you can use event.target.style to get access to all styling attributes

– AlbertS
Nov 23 '18 at 18:00





you can use event.target.style to get access to all styling attributes

– AlbertS
Nov 23 '18 at 18:00












1 Answer
1






active

oldest

votes


















1















Basically, I'm expecting that "event" in the handleTabHover function to be the "LinkTab" component and then I can access it's "indicatorColor" param to set the class "indicatorColor" state, but that's not the case.




Yes, You can't do that.



The correct way would be



<LinkTab
label="Dashboard"
to="/"
indicatorColor={Colors.Deloitte.Primary.coolGray2}
onMouseOver={() => this.handleTabHover(Colors.Deloitte.Primary.coolGray2)}
onFocus={this.handleTabHover}
/>


and in your handler will be



handleTabHover = indicatorColor => {
this.setState({ indicatorColor });
};


You can read more here. https://reactjs.org/docs/faq-functions.html#how-do-i-pass-a-parameter-to-an-event-handler-or-callback






share|improve this answer
























  • Ah, thank you! Just out of curiosity, is there an alternative way to do this that doesn't involve an arrow function/binding in Render? I don't think I'll have any performance issues, but it'd be nice to know of other possibilities.

    – gamecockcowboysfan
    Nov 23 '18 at 18:13













  • The performance cost isn't that big, so you can skip worrying about that part. ;) twitter.com/mjackson/status/1006600058228207616 Maybe another way can be using the custom data-* attribute if you want. reactjs.org/docs/… But not sure if it aligns with what you want to achieve.

    – Hardik Modha
    Nov 23 '18 at 18:19











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/3.0/"u003ecc by-sa 3.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%2f53451002%2faccessing-react-component-params-in-event-handler%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















Basically, I'm expecting that "event" in the handleTabHover function to be the "LinkTab" component and then I can access it's "indicatorColor" param to set the class "indicatorColor" state, but that's not the case.




Yes, You can't do that.



The correct way would be



<LinkTab
label="Dashboard"
to="/"
indicatorColor={Colors.Deloitte.Primary.coolGray2}
onMouseOver={() => this.handleTabHover(Colors.Deloitte.Primary.coolGray2)}
onFocus={this.handleTabHover}
/>


and in your handler will be



handleTabHover = indicatorColor => {
this.setState({ indicatorColor });
};


You can read more here. https://reactjs.org/docs/faq-functions.html#how-do-i-pass-a-parameter-to-an-event-handler-or-callback






share|improve this answer
























  • Ah, thank you! Just out of curiosity, is there an alternative way to do this that doesn't involve an arrow function/binding in Render? I don't think I'll have any performance issues, but it'd be nice to know of other possibilities.

    – gamecockcowboysfan
    Nov 23 '18 at 18:13













  • The performance cost isn't that big, so you can skip worrying about that part. ;) twitter.com/mjackson/status/1006600058228207616 Maybe another way can be using the custom data-* attribute if you want. reactjs.org/docs/… But not sure if it aligns with what you want to achieve.

    – Hardik Modha
    Nov 23 '18 at 18:19
















1















Basically, I'm expecting that "event" in the handleTabHover function to be the "LinkTab" component and then I can access it's "indicatorColor" param to set the class "indicatorColor" state, but that's not the case.




Yes, You can't do that.



The correct way would be



<LinkTab
label="Dashboard"
to="/"
indicatorColor={Colors.Deloitte.Primary.coolGray2}
onMouseOver={() => this.handleTabHover(Colors.Deloitte.Primary.coolGray2)}
onFocus={this.handleTabHover}
/>


and in your handler will be



handleTabHover = indicatorColor => {
this.setState({ indicatorColor });
};


You can read more here. https://reactjs.org/docs/faq-functions.html#how-do-i-pass-a-parameter-to-an-event-handler-or-callback






share|improve this answer
























  • Ah, thank you! Just out of curiosity, is there an alternative way to do this that doesn't involve an arrow function/binding in Render? I don't think I'll have any performance issues, but it'd be nice to know of other possibilities.

    – gamecockcowboysfan
    Nov 23 '18 at 18:13













  • The performance cost isn't that big, so you can skip worrying about that part. ;) twitter.com/mjackson/status/1006600058228207616 Maybe another way can be using the custom data-* attribute if you want. reactjs.org/docs/… But not sure if it aligns with what you want to achieve.

    – Hardik Modha
    Nov 23 '18 at 18:19














1












1








1








Basically, I'm expecting that "event" in the handleTabHover function to be the "LinkTab" component and then I can access it's "indicatorColor" param to set the class "indicatorColor" state, but that's not the case.




Yes, You can't do that.



The correct way would be



<LinkTab
label="Dashboard"
to="/"
indicatorColor={Colors.Deloitte.Primary.coolGray2}
onMouseOver={() => this.handleTabHover(Colors.Deloitte.Primary.coolGray2)}
onFocus={this.handleTabHover}
/>


and in your handler will be



handleTabHover = indicatorColor => {
this.setState({ indicatorColor });
};


You can read more here. https://reactjs.org/docs/faq-functions.html#how-do-i-pass-a-parameter-to-an-event-handler-or-callback






share|improve this answer














Basically, I'm expecting that "event" in the handleTabHover function to be the "LinkTab" component and then I can access it's "indicatorColor" param to set the class "indicatorColor" state, but that's not the case.




Yes, You can't do that.



The correct way would be



<LinkTab
label="Dashboard"
to="/"
indicatorColor={Colors.Deloitte.Primary.coolGray2}
onMouseOver={() => this.handleTabHover(Colors.Deloitte.Primary.coolGray2)}
onFocus={this.handleTabHover}
/>


and in your handler will be



handleTabHover = indicatorColor => {
this.setState({ indicatorColor });
};


You can read more here. https://reactjs.org/docs/faq-functions.html#how-do-i-pass-a-parameter-to-an-event-handler-or-callback







share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 23 '18 at 17:46









Hardik ModhaHardik Modha

4,33212029




4,33212029













  • Ah, thank you! Just out of curiosity, is there an alternative way to do this that doesn't involve an arrow function/binding in Render? I don't think I'll have any performance issues, but it'd be nice to know of other possibilities.

    – gamecockcowboysfan
    Nov 23 '18 at 18:13













  • The performance cost isn't that big, so you can skip worrying about that part. ;) twitter.com/mjackson/status/1006600058228207616 Maybe another way can be using the custom data-* attribute if you want. reactjs.org/docs/… But not sure if it aligns with what you want to achieve.

    – Hardik Modha
    Nov 23 '18 at 18:19



















  • Ah, thank you! Just out of curiosity, is there an alternative way to do this that doesn't involve an arrow function/binding in Render? I don't think I'll have any performance issues, but it'd be nice to know of other possibilities.

    – gamecockcowboysfan
    Nov 23 '18 at 18:13













  • The performance cost isn't that big, so you can skip worrying about that part. ;) twitter.com/mjackson/status/1006600058228207616 Maybe another way can be using the custom data-* attribute if you want. reactjs.org/docs/… But not sure if it aligns with what you want to achieve.

    – Hardik Modha
    Nov 23 '18 at 18:19

















Ah, thank you! Just out of curiosity, is there an alternative way to do this that doesn't involve an arrow function/binding in Render? I don't think I'll have any performance issues, but it'd be nice to know of other possibilities.

– gamecockcowboysfan
Nov 23 '18 at 18:13







Ah, thank you! Just out of curiosity, is there an alternative way to do this that doesn't involve an arrow function/binding in Render? I don't think I'll have any performance issues, but it'd be nice to know of other possibilities.

– gamecockcowboysfan
Nov 23 '18 at 18:13















The performance cost isn't that big, so you can skip worrying about that part. ;) twitter.com/mjackson/status/1006600058228207616 Maybe another way can be using the custom data-* attribute if you want. reactjs.org/docs/… But not sure if it aligns with what you want to achieve.

– Hardik Modha
Nov 23 '18 at 18:19





The performance cost isn't that big, so you can skip worrying about that part. ;) twitter.com/mjackson/status/1006600058228207616 Maybe another way can be using the custom data-* attribute if you want. reactjs.org/docs/… But not sure if it aligns with what you want to achieve.

– Hardik Modha
Nov 23 '18 at 18:19




















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%2f53451002%2faccessing-react-component-params-in-event-handler%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

Wiesbaden

Marschland

Dieringhausen