通常、で使用しない場合props
は、construtor
空白のままにしておくことができます
constructor() {
super()
}
ただし、TypeScriptでは定義する必要があります。私がそれを使用しない場合、私は次のようなことをしています:
constructor(_: never) {
super(_)
}
決して使用しない引数を宣言する正しいおよび/またはより正式な方法はありますか?
関数パラメーターは、コンパイルエラーを回避するために使用されていない場合、TypeScriptで強調表示できます。_
名前には情報が含まれておらず、他のプロパティ名があると衝突するため、誤解を招く恐れがあります。プロパティはsuper
引数として使用されるため、下線は必要ありません。
never
これは決して使用されないプロパティではなく何か他のものを意味するため、ここでは正しいタイプではありません。親コンストラクターのパラメーター型と競合している可能性があります。
constructor(...args) {
super(...args);
// ...
}
JavaScriptでこれを行うには適切な方法ですが、TypeScriptsuper
では、必須の場合は引数を明示的に指定する必要があります。このような明示的なコンストラクターは、noconstructor
が指定されている場合にデフォルトで実行されるため、省略できます。
Reactコンポーネントで明示的なコンストラクターが必要になることはめったにありません。super
有効な唯一のプロパティはprops
です。ほとんどの初期化コードはコンポーネントライフサイクルフックに送られますが(非推奨componentWillMount
は唯一の例外です)、インスタンスプロパティはTypeScriptでクラスフィールドとして宣言できます。
class SomeComponent extends React.Component {
state = {
foo: synchronousInitialization();
};
// isn't needed
/*
constructor(props) {
super(props);
}
*/
async componentDidMount() {
const bar = await asynchronousInitialization();
this.setState({ ...this.state, bar });
}
...
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加