React+Typescript はインターフェイス ジェネリックスを使用してプロパティを処理します

さて、コンポーネントの話は終わったので、今回はデータ転送の仕組みを見てみましょう。

または上記の場合、たとえば、タイトルを Hello コンポーネントに渡したい場合は、タグ属性の形式で
直接
ここに画像の説明を挿入
渡すことができます。

そして、サブコンポーネントでこのように使用します
ここに画像の説明を挿入
が、エディターからは、この書き方はもう不可能であることがわかります。

次に、hello コンポーネントをこれに変更します

import * as React from "react";

interface IProps {
    
    
    title: string
}

export default class hello extends React.Component<IProps> {
    
    

    public constructor(props:any){
    
    
        super(props);
    }
    public render() {
    
    
        return (
            <div>{
    
     this.props.title }</div>
        )
    }
}


最大の違いは、 title という文字列型のフィールドを必要とするインターフェイス IProps を定義し
、それをジェネリック化のために React コンポーネントに掛けていることです。
この場合、これは親子コンポーネントとなり、エラーは報告されません。
ここに画像の説明を挿入
ここに画像の説明を挿入
もちろん、渡すことができます。複数のデータ

ここでは、子コンポーネントに年齢番号 20 を与え
ここに画像の説明を挿入
、子コンポーネントの型を指定します。
ここに画像の説明を挿入
ここでは、 Number を使用して、それが数値型であることを示します。次に、親コンポーネントを文字列に変更しようとします
ここに画像の説明を挿入
。ここでエラーが報告されますが、これも強化できるTの意味です コード仕様と可読性

さて、最終的な親コンポーネントのコードは次のとおりです

import Hello from "./components/hello";

function App() {
    
    
  return (
    <div className="App">
        hello React Typescript
        <Hello title = "高阶组件" age = {
    
     20 } />
    </div>
  );
}

export default App;

サブコンポーネントコード

import * as React from "react";

interface IProps {
    
    
    title: string,
    age: number
}

export default class hello extends React.Component<IProps,any> {
    
    

    public constructor(props:any){
    
    
        super(props);
    }
    public render() {
    
    
        return (
            <div>
                <div>{
    
     this.props.title }</div>
                <div>{
    
     this.props.age }</div>
            </div>
        )
    }
}


ここに画像の説明を挿入
その後、問題なくプロジェクトを実行します

おすすめ

転載: blog.csdn.net/weixin_45966674/article/details/132341771