You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React使用useImperativeHandle后父组件无法调用子组件暴露方法问题

问题原因

JavaScript 是大小写敏感的编程语言,你在 useImperativeHandle 中暴露的方法名是小写开头的 sortVote,但父组件调用时用了大写开头的 SortVote,二者被识别为完全不同的属性,因此抛出“不是函数”的错误。

解决方法

把父组件中的调用代码修改为小写开头即可:

childRef.current.sortVote();

额外优化建议

你当前子组件中直接对 props 传入的 articles 调用 sort 方法,Array.sort 是原地排序方法,会直接修改原数组,可能引发不可预期的状态问题,建议排序前先拷贝一份数组再操作:

// 以sortVote方法为例,sortDate同理
const result = [...articles].sort((a, b) => {
  if (a.upvotes > b.upvotes) return -1;
  if (a.upvotes < b.upvotes) return 1;
  return 0;
});

内容的提问来源于stack exchange,提问作者user504909

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:15:03