Typescript React 空函数作为 defaultProps
Typescript React empty function as defaultProps
我有一个带有可选函数参数的无状态功能组件 属性 (onClick),我试图将一个空函数定义为默认 属性 以便能够在我的组件中安全地执行:
<span onClick={props.onClick} />
但是我有以下错误:'Expression expected.'
interface IProps {
size?: sizeType;
onClick?: (e:any) => void;
}
const Foo: React.SFC = (props: IProps) => {
// ...
};
const defaultProps: IProps = {
size: 'default',
onClick: () => void <-- Expression expected.
};
Foo = defaultProps;
我该怎么做?
您不能将 javascript 中的 void
用作 return 值。使用 null
作为 return 值,而不是 void。
onClick: () => null
您可以使用以下内容:
const defaultProps: IProps = {
size: 'default',
onClick: () => void(0)
};
我经常
MyComponent.defaultProps = {
someNoop: f => f
}
作为简短、易于输入的东西,并且只会 return undefined
。
我认为使用 lodashes noop 可能是一个不错的选择,因为根据组件在访问 prop 之前重新渲染的次数,它会创建很多对匿名函数的引用,这实际上是您需要的功能的占位符。类似于:
import noop from 'lodash/noop';
MyComponent.defaultProps = {
myfunc: noop,
};
这是一个小的优化,但也阻止开发人员为每个需要 func 的默认 prop 声明创建匿名函数。
我有一个带有可选函数参数的无状态功能组件 属性 (onClick),我试图将一个空函数定义为默认 属性 以便能够在我的组件中安全地执行:
<span onClick={props.onClick} />
但是我有以下错误:'Expression expected.'
interface IProps {
size?: sizeType;
onClick?: (e:any) => void;
}
const Foo: React.SFC = (props: IProps) => {
// ...
};
const defaultProps: IProps = {
size: 'default',
onClick: () => void <-- Expression expected.
};
Foo = defaultProps;
我该怎么做?
您不能将 javascript 中的 void
用作 return 值。使用 null
作为 return 值,而不是 void。
onClick: () => null
您可以使用以下内容:
const defaultProps: IProps = {
size: 'default',
onClick: () => void(0)
};
我经常
MyComponent.defaultProps = {
someNoop: f => f
}
作为简短、易于输入的东西,并且只会 return undefined
。
我认为使用 lodashes noop 可能是一个不错的选择,因为根据组件在访问 prop 之前重新渲染的次数,它会创建很多对匿名函数的引用,这实际上是您需要的功能的占位符。类似于:
import noop from 'lodash/noop';
MyComponent.defaultProps = {
myfunc: noop,
};
这是一个小的优化,但也阻止开发人员为每个需要 func 的默认 prop 声明创建匿名函数。