Skip to content

0326 今日总结

关键词:

今日工作

问题,原因,解决方式,优化,巧妙实现,新知识

问题1:React + TS,如何获取组件的 props 类型;

先说答案:

tsx
type AA = React.ComponentProps<typeof CodeBlock>;

type BB = React.ElementRef<typeof CodeBlock>;

查看示例:

tsx
type RefProps = {
  highLight: () => void;
}

type CodeBlockProps = {
  title: string;
}

const CodeBlock = React.forwardRef<RefProps, CodeBlockProps>((props, ref) => (
  <button ref={ref} className="CodeBlock">
    {props.children}
  </button>
));


// 获取组件的 props
type AA = React.ComponentProps<typeof CodeBlock>;

// 获取 使用 forwardRef 包裹的组件的 ref props
type BB = React.ElementRef<typeof CodeBlock>;




type CodeRefProps = React.ElementRef<typeof CodeBlock>;

type CodeProps = React.ComponentProps<typeof CodeBlock> & {
  ref: RefObject<CodeRefProps>;
};


type EE = CodeProps['ref']['current'] // 这里的结果是 ref 类型 或 null,所以不能继续往后取属性了

const a: EE;

const b = a?.highLight() // ...可以提示 ref 的类型

参考资料:

问题2:npm 切换到 pnpm 注意问题

近期公司项目切换包管理器 npm 到 pnpm,出现点问题,记录一下;

类似遮掩的错误:ERR_PNPM_FROZEN_LOCKFILE_WITH_OUTDATED_LOCKFILE ,实际上是因为切换了 包管理器,同时生成了 pnpm-lock 文件和旧的 package-lock.json 文件,导致 pnpm 执行的时候不知道选择哪个作为依据,删除旧的 package-lock.json 即可

问题3:antd table 使用的列使用 ellipsis: true 自动省略属性 + Tooltip 导致位置弹窗错位

答案:https://ant-design.antgroup.com/components/table-cn

tsx
{
    title: 'Long Column',
    dataIndex: 'address',
    key: 'address 4',
    // 如:下面的代码
    ellipsis: {
      showTitle: false,
    },
    render: (address) => (
      <Tooltip placement="topLeft" title={address}>
        {address}
      </Tooltip>
    ),
  },

同时,在使用 Tooltip 组件的时候,若在 Modal 框内使用,需要注意层级,可以设置 z-index,一般 antd 的 Modal 框层级是 1000;

今天测试就提了一个 bug,嵌套的 2 个 Modal 里的 Tooltip 内容,显示在中间层被覆盖了,设置 z-index 即可;

好文推荐

有感好文,专题好文

TOP3

英文推荐

其他好文

项目/博客推荐

值得学习 作者/项目/工具等

博客

项目

技术点-前端 word 在线编辑和导出

astro 技术搭建博客

好看的 portfolio 和博客

工具

windows 升级 11

我的电脑无法升级 11,查了一下是硬件问题:

有趣的东西

Released under the MIT License.