検索

ホームページ  >  に質問  >  本文

VisualStudioCode のエラー: 「タイプ 'PropsWithChildren<{}>' に次のプロパティの React.FC プロパティがありません: db、auth、test」

私は React、ionic、tsx などを初めて使用しており、スタックオーバーフローやチュートリアルをたくさん見ましたが、自分のセットアップに移せるものが見つかりません。

子コンポーネントに提供する状態をクラス コンポーネントに設定して、子コンポーネントが useState フックを使用して変数にアクセスできるようにし、別のコンポーネントで setState を使用した後にレンダリングを更新できるようにしようとしています。基本的に、IonHeader でログイン ボタンを取得して、firebase を使用してユーザーを認証しようとしています。その後、コンポーネントは onAuthStateChanged フックを使用して setState 経由で状態を更新できます。 IonContent 内の他のコンポーネントは useState を使用してコールバックを取得し、ユーザーがログインしているかどうかに応じてコンテンツを表示するかどうかを判断できます。子が関数と状態にアクセスできるように、クラス インスタンスを setState 関数にバインドする必要があるかもしれません。

私が解決しようとしている問題は、個々の子コンポーネントがリッスンして変更できる状態を同期して、他のコンポーネントに新しい状態でレンダリングするよう警告することです。 auth オブジェクトと db オブジェクトについては、それぞれのコンポーネントに入れることができます。

「test: String」を認証のユーザーに置き換えます。null の場合はオブジェクトになります。このようにして、ユーザーがログインしているかどうかを確認できます。すべては IonReactRoute と

にまとめられています。

州.tsx

リーリー

ボタン.tsx

リーリー

ホーム.tsx

リーリー

ここで何が問題になっているのか理解できません。リターンを 1 つの要素にラップし、PropsWithChildren を介して子プロパティを提供しました。 LoginButton 内にテキストを追加すると、「タイプ '{children: string; }' にはタイプ 'States' の次のプロパティがありません: db、auth、test」というメッセージが表示されます。要素を追加するとエラー メッセージが変わります。その場合、子コンポーネントを追加するにはどうすればよいでしょうか? PropsWithChildren がこの問題を解決してくれると思います。

これが良い解決策なのか、うまくいくのかわかりませんが、フィードバックは大歓迎です。

P粉759457420P粉759457420327日前514

全員に返信(1)返信します

  • P粉766520991

    P粉7665209912024-03-30 00:05:15

    "Type '{}' などが表示される理由は、state フィールドが React.Component を継承しているためです。デフォルトでは、 this.state の型は Readonly<{}> で、これを {...this.state} > のように展開すると、結果の型は { } .

    States として を使用しても、this.state のタイプは変更されません。これは、let A: Superclass = B as SubclassA の型がサブクラスではなくスーパークラスになるのと似ています。

    入力の問題を解決する 1 つの方法は、state フィールドの型をオーバーライドすることです。

    リーリー

    もう 1 つのアプローチは、汎用 React.Component の型パラメーターを明示的に指定することです。ここで、P はプロパティを表し、S code> が使用されます。州。

    リーリー

    返事
    0
  • キャンセル返事