TanStack排序箭头函数onClick失效,直接调用却正常,原因何在?
TanStack Table排序点击事件无响应问题解析
这俩写法的核心区别在于有没有执行getToggleSortingHandler()返回的实际处理函数:
- 无响应写法的问题:
onClick={() => { header.column.getToggleSortingHandler(); }}
getToggleSortingHandler()本身是个「生成处理函数的函数」,调用它只会返回真正负责切换排序的事件处理函数,但你在箭头函数里只是调用了这个生成函数,没有执行它返回的那个实际函数,所以点击时啥也不会发生。
要让它生效,得把返回的函数也执行了:
onClick={() => { header.column.getToggleSortingHandler()(); }}
- 正常工作的写法:
onClick={ header.column.getToggleSortingHandler() }
这里直接调用getToggleSortingHandler(),拿到它返回的排序处理函数,然后把这个函数赋值给onClick。当点击事件触发时,React会自动执行这个处理函数,所以排序逻辑能正常运行。
简单说就是:第一种写法只做了「拿函数」的动作,没做「执行函数」的动作;第二种写法直接把「拿到的函数」交给了onClick,点击时会自动执行。
内容的提问来源于stack exchange,提问作者bingBong
相关产品推荐
相关产品推荐

