javascript - React 在传递函数引用时不更新 className

标签 javascript reactjs react-dom

我正在 React 中制作一个小例子。我遇到的问题之一是,当我将函数引用传递给 onClick 时事件处理程序,并且当执行该事件时,React 不会更新组件上的类,也就是说,它不会执行组件中定义的另一个函数。

这是问题所在的代码片段。完整的代码片段可以在这里找到:https://jsfiddle.net/h6k4um9o/

const Numbers = (props) => {
  const handleClick = (event) => {
    props.selectNumber(event.target.innerText)
  }
  const numberClassName = (number) => {
    if(props.selectedNumbers.indexOf(number) >= 0) {
      return 'selected';
    }
  }

  return (
    <div className="card text-center">
      <div>
        {Numbers.list.map((number, index) =>
        <span key={index} className={numberClassName(number)} 
              onClick={handleClick}>{number}</span>
        )}
      </div>
    </div>
  );
}

在上面的代码中,当我们传递handleClick时引用onClick事件它不会应用 numberClassName 添加的类。但是,使用内联函数时问题就得到了解决。

onClick={() => props.selectNumber(number)}>{number}</span>

对这个问题有什么想法吗?

提前致谢。

最佳答案

您的 handleClick 函数需要一个数字,而您正在传递一个字符串。如果你将其更改为

应该可以工作
const handleClick = (event) => {
    props.selectNumber(Number(event.target.innerText))
  }

关于javascript - React 在传递函数引用时不更新 className,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46596784/

相关文章:

android - 如何通过下拉刷新Expo Webview中的页面?

reactjs - 我可以在前端使用JSDom来解析html吗

javascript - React中如何让用户下载数据(CSV)?

reactjs - 如何配置nextjs 9 与ant design 兼容性较差?

reactjs - react 测试库渲染 VS ReactDOM.render

javascript - AngularJS - $filter 未定义

javascript - jquery thickbox引用问题

javascript - React-Router 1.0.0 未捕获错误 : Invariant Violation: Element type is invalid

javascript - 在事件中调用渲染时模型显示为未定义

javascript - greensock 为元素一一添加类