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

React.memo包裹组件后VSCode无法显示JSDoc注释的解决办法咨询

React.memo包裹组件后VSCode无法显示JSDoc注释的解决办法咨询

我之前也碰到过这个烦人的问题!VSCode的语言服务(不管是JS还是TS环境)有时候没办法自动透过React.memo的包裹,识别到原始组件上的JSDoc注释,不过我试了几个亲测有效的解决办法,分享给你:

  • 用类型断言告诉VSCode组件的真实类型
    这种方法不需要重复写JSDoc,只需要在React.memo导出语句上方加一行类型注释,明确告诉编辑器,memo处理后的组件和原组件的类型(包括注释)完全一致:

    /**
     * 这是我的组件的JSDoc说明
     * @param {Object} props - 组件属性
     * @param {string} props.name - 要显示的用户名
     */
    const MyComponent = ({ name }) => {
      return <div>Hello, {name}!</div>;
    };
    
    /** @type {typeof MyComponent} */
    export default React.memo(MyComponent);
    

    这样VSCode就能直接复用原组件的JSDoc,在使用组件时正常显示完整注释。

  • 给React.memo显式指定泛型参数(TS项目适用)
    如果你的项目用TypeScript,可以给React.memo显式传入组件的Props类型,让语言服务能精准推断组件的类型信息,连带JSDoc一起识别:

    import React from 'react';
    
    /**
     * 这是我的组件的JSDoc说明
     * @param {Object} props - 组件属性
     * @param {string} props.name - 要显示的用户名
     */
    type MyComponentProps = {
      name: string;
    };
    
    const MyComponent = ({ name }: MyComponentProps) => {
      return <div>Hello, {name}!</div>;
    };
    
    export default React.memo<MyComponentProps>(MyComponent);
    
  • 直接给memo后的导出添加JSDoc
    这是最直接的“笨办法”,如果不想折腾类型,直接在导出的React.memo语句上方复制原组件的JSDoc即可,虽然有点重复,但能快速解决问题:

    const MyComponent = ({ name }) => {
      return <div>Hello, {name}!</div>;
    };
    
    /**
     * 这是我的组件的JSDoc说明
     * @param {Object} props - 组件属性
     * @param {string} props.name - 要显示的用户名
     */
    export default React.memo(MyComponent);
    

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 10:35:33