【问题标题】:Accessing React component params in event handler在事件处理程序中访问 React 组件参数
【发布时间】:2019-04-26 07:41:58
【问题描述】:

我不确定我是否是最好的方法,但我正在尝试在 onMouseOver 事件处理程序中访问 React 组件的参数。

事件处理程序:

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

反应组件:

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

基本上,我希望 handleTabHover 函数中的 event 成为 LinkTab 组件,然后我可以访问它的“indicatorColor”参数来设置类 indicatorColor 状态,但事实并非如此。我是 React 和 ES6 语法的新手,所以我确信我错过了一些关于事件处理程序参数如何工作的基本知识。

【问题讨论】:

  • 您可以使用 event.target.style 来访问所有样式属性

标签: javascript reactjs


【解决方案1】:

基本上,我希望 handleTabHover 函数中的“事件”是“LinkTab”组件,然后我可以访问它的“indicatorColor”参数来设置类“indicatorColor”状态,但事实并非如此。

是的,你不能那样做。

正确的做法是

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

在你的处理程序中将是

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

您可以在此处阅读更多内容。 https://reactjs.org/docs/faq-functions.html#how-do-i-pass-a-parameter-to-an-event-handler-or-callback

【讨论】:

  • 啊,谢谢!只是出于好奇,是否有另一种方法可以做到这一点,而不涉及渲染中的箭头功能/绑定?我认为我不会有任何性能问题,但很高兴知道其他可能性。
  • 性能成本并没有那么大,所以你可以跳过这部分的担心。 ;) twitter.com/mjackson/status/1006600058228207616 如果你愿意,也许另一种方法可以使用自定义 data-* 属性。 reactjs.org/docs/… 但不确定它是否符合您想要实现的目标。
猜你喜欢
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 2018-01-25
  • 2020-09-12
  • 2018-03-23
  • 2015-09-25
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多