プロパティ(onClick)としてオプションの関数パラメーターを持つステートレス機能コンポーネントがあります。コンポーネントで安全に実行できるように、デフォルトのプロパティとして空の関数を定義しようとしました:
<span onClick={props.onClick} />
しかし、次のエラーがあります。「式が必要です。」
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;
どうすればよいですか?
次のものを使用できます。
const defaultProps: IProps = {
size: 'default',
onClick: () => void(0)
};
JavaScriptでvoid
を戻り値として使用することはできません。 voidの代わりに、null
を戻り値として使用します。
onClick: () => null
コンポーネントがプロップにアクセスする前にコンポーネントが持つ再レンダリングの数に応じて、lodashes noopを使用することは良いオプションかもしれないと思います必要な機能。何かのようなもの:
import noop from 'lodash/noop';
MyComponent.defaultProps = {
myfunc: noop,
};
その小さな最適化だけでなく、開発者がfuncが必要なすべてのデフォルトのprop宣言に対して無名関数を作成することもできません。
私はいつもします
MyComponent.defaultProps = {
someNoop: f => f
}
短く、タイプしやすく、単にundefined
を返すものとして。