【问题标题】:React Data Grid Custom Row Renderer function in TypescriptTypescript 中的 React Data Grid Custom Row Renderer 函数
【发布时间】:2020-05-06 14:50:59
【问题描述】:

我想将下面的 RowRender() 函数转换为 Typescript

const RowRenderer = ({ renderBaseRow, ...props }) => {
  const color = props.idx % 2 ? "green" : "blue";
  return <div style={{ color }}>{renderBaseRow(props)}</div>;
};

此处的完整示例: React Data Grid - Intercepting a row

我的幼稚做法是

interface RowRender {
  idx: Number
};

const rowRenderer = ({ renderBaseRow, ...props }: {renderBaseRow: Function, props: RowRender}) => {
  const color = props.idx % 2 ? "green" : "blue";
  return <div style={{ color }}>{renderBaseRow(props)}</div>;
};

但是 vscode 仍然对 props.idx 不满意

类型 '{ props: RowRender; 上不存在属性 'idx' }'。

如何解决?

【问题讨论】:

    标签: reactjs typescript react-data-grid


    【解决方案1】:

    您需要通过将RowRenderer 组件声明为功能组件以及所需的通用参数来提供它的类型。您也可以参考这里的typings

    interface IRowRender {
      renderBaseRow: (e: any) => void
      idx: number;
    }
    
    const rowRenderer: React.FC<IRowRender> = ({ renderBaseRow, ...props }) => {
      const color = props.idx % 2 ? "green" : "blue";
      return <div style={{ color }}>{renderBaseRow(props)}</div>;
    };
    

    【讨论】:

    • 感谢工作:) 但必须将“renderBaseRow: (e: any) => void”替换为“renderBaseRow: (e: any) => ReactNode”
    • 啊,是的,有道理,因为它返回一个 ReactNode。无论如何,我对这个库不是很熟悉,这就是为什么我用any 代替renderBaseRow。您可能想为它寻找正确的类型!
    猜你喜欢
    • 2011-07-29
    • 2021-03-25
    • 2017-01-22
    • 2022-11-12
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多