React with TypeScript では、関数コンポーネントとクラス コンポーネントという 2 つの主なアプローチを使用してコンポーネントを作成できます。どちらのアプローチでもプロパティと状態を操作できますが、使用するパラダイムはわずかに異なります。 TypeScript は静的型付けを提供することで開発の安全性をさらに高め、プロパティと状態の形状を正確に定義できます。
以下では、インターフェイスを使用して型を定義し、コードの一貫性と読みやすさを確保するさまざまなコンポーネントの例を見ていきます。
この場合、props も state も使用しない単純な機能コンポーネントは次のようになります:
import React from 'react'; const FunctionalComponent: React.FC = () => { returnHello, DEV.to!; };
このコンポーネントは静的テキストのみを表示します。
プロパティを介してデータを渡したい場合は、インターフェイスを使用してそのデータの形式を定義します。
import React from 'react'; interface IMyProps { name: string; } const FunctionalComponentWithProps: React.FC= ({ name }) => { return Hello, {name}!; };
ここで、IMyProps には、パーソナライズされた挨拶を表示するために使用される名前が含まれています。
機能コンポーネントで状態を使用する場合、React の useState フックを使用します:
import React, { useState } from 'react'; const FunctionalComponentWithState: React.FC = () => { const [count, setCount] = useState(0); return (); };Count: {count}
このコンポーネントはローカル状態を使用してカウンターを追跡します。
プロパティと状態を組み合わせることで、プロパティを通じてデータを受け取り、内部で状態を操作する柔軟なコンポーネントを作成できます:
import React, { useState } from 'react'; interface IMyProps { initialCount: number; } const FunctionalComponentWithPropsAndState: React.FC= ({ initialCount }) => { const [count, setCount] = useState(initialCount); return ( ); };Count: {count}
このコンポーネントは、initialCount をプロップとして使用し、動的カウンター追跡の内部状態を使用します。
React の props と state のないクラス コンポーネントは次のようになります:
import React from 'react'; class ClassComponent extends React.Component { render() { returnHello, DEV.to!; } }
これは静的テキストを表示する単純なクラス コンポーネントです。
クラスコンポーネントがプロパティを受け取ると、インターフェイスを使用してそれらを定義します:
import React from 'react'; interface IMyProps { name: string; } class ClassComponentWithProps extends React.Component{ render() { return Hello, {this.props.name}!; } }
機能コンポーネントと同様に、ここでもプロップを使用してパーソナライズされたデータを表示します。
状態を持つクラス コンポーネントの場合、コンストラクター内で状態を定義します。
小道具を使用しない場合は、コンストラクター内のかっこを空のままにすることができます:
import React from 'react'; interface IMyState { count: number; } class ClassComponentWithState extends React.Component { constructor() { super({}); this.state = { count: 0 }; } render() { return (); } }Count: {this.state.count}
小道具について明示的にしたい場合は、タイプとして {} を指定できます:
import React from 'react'; interface IMyState { count: number; } class ClassComponentWithState extends React.Component { constructor(props: {}) { super(props); this.state = { count: 0 }; } render() { return (); } }Count: {this.state.count}
-> どちらの場合でも、TypeScript と React は正しく動作します。コンポーネントが props を使用しない場合は、コンストラクターで空の括弧を使用するだけで済みますが、初期化エラーを避けるために必ずスーパー呼び出しで {} を渡してください。
このコンポーネントは状態を使用してカウンターの変更を追跡します。
プロパティと状態の両方を使用するクラス コンポーネントの場合、両方の概念を組み合わせることができます:
import React from 'react'; interface IMyProps { initialCount: number; } interface IMyState { count: number; } class ClassComponentWithPropsAndState extends React.Component{ constructor(props: IMyProps) { super(props); this.state = { count: props.initialCount }; } render() { return ( ); } }Count: {this.state.count}
このコンポーネントは props を通じて初期カウンターを受け取り、さらに内部で状態を操作します。
TypeScript でインターフェイスを使用すると、特に複雑なデータ構造を扱う場合に、入力が向上し、コードが読みやすくなります。これらの基本的な例を使用すると、React と TypeScript を使用して関数コンポーネントとクラス コンポーネントを作成するための基礎が得られます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3