我正在尝试将以下内容转换为使用React.memo
:
interface Props<TRowData> {
// props...
}
export function Table<TRowData>({
propA,
propB
}: Props<TRowData>) {
}
像这样(不正确):
interface Props<TRowData> {
// props...
}
export const Table = memo<Props<TRowData>>(
({
propA,
propB
}) => {
})
如何纠正此语法?目前它有以下错误:
// Cannot find name 'TRowData'.
export const Table = memo<Props<TRowData>>(
~~~~~~~~
4条答案
按热度按时间oxf4rvwz1#
我通过将memo和non-memo分开并进行一些类型转换来解决它:
然后:
或者:
sgtfey8w2#
使用当前的React类型声明,不可能从
React.memo
中创建通用组件。没有类型Assert的解决方案是添加额外的memo
函数重载来利用TS 3.4高阶函数类型推断:然后你就可以使
Table
组件成为泛型了。只要确保传递一个泛型函数给memo
:Playground
de90aj5v3#
你不需要传递一个组件作为
React.memo
的第一个参数吗?我无法测试它,但我觉得这是思考过程:nfzehxib4#
很简单,只需将一个非箭头函数传递给
React.memo
:或者如果需要默认导出:
编辑:你可以用下面的代码来检查这是否有效:
element
的类型为