web-dev-qa-db-ja.com

Typescript React空の関数としてdefaultProps

プロパティ(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;

どうすればよいですか?

6
Fabrice

次のものを使用できます。

const defaultProps: IProps = {
   size: 'default',
   onClick: () => void(0)
};
10
Remo H. Jansen

JavaScriptでvoidを戻り値として使用することはできません。 voidの代わりに、nullを戻り値として使用します。

onClick: () => null
16

コンポーネントがプロップにアクセスする前にコンポーネントが持つ再レンダリングの数に応じて、lodashes noopを使用することは良いオプションかもしれないと思います必要な機能。何かのようなもの:

import noop from 'lodash/noop';
MyComponent.defaultProps = {
  myfunc: noop,
};

その小さな最適化だけでなく、開発者がfuncが必要なすべてのデフォルトのprop宣言に対して無名関数を作成することもできません。

2
Scott Stern

私はいつもします

MyComponent.defaultProps = {
  someNoop: f => f
}

短く、タイプしやすく、単にundefinedを返すものとして。

1
1252748