Typescript 中的 React Data Grid Custom Row Renderer 函数
React Data Grid Custom Row Renderer function in Typescript
我想将以下 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不满意
Property 'idx' does not exist on type '{ props: RowRender; }'.
如何解决?
您需要通过将 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>;
};
我想将以下 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不满意
Property 'idx' does not exist on type '{ props: RowRender; }'.
如何解决?
您需要通过将 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>;
};