React ステートレスな関数型コンポーネントにおける PropTypes
2023-09-01 07:26:22
質問
Reactで、ステートレスな機能コンポーネントを書きましたが、Prop Typeの検証を追加したいと思います。
List
コンポーネントを作成しました。
import React from 'react';
import PropTypes from 'prop-types';
function List(props) {
const todos = props.todos.map((todo, index) => (<li key={index}>{todo}</li>));
return (<ul></ul>);
}
List.PropTypes = {
todos: PropTypes.array.isRequired,
};
export default List;
App
コンポーネント、レンダリング
List
:
import React from 'react';
import List from './List';
class App extends React.Component {
constructor() {
super();
this.state = {
todos: '',
};
}
render() {
return (<List todos={this.state.todos} />);
}
}
export default App;
でお分かりのように
App
で、私は
this.state.todos
を
List
. このため
this.state.todos
は文字列なので、Prop Type バリデーションが動作することを期待しました。代わりに、ブラウザのコンソールにエラーが表示されました。
map
.
Prop Type バリデーションが期待どおりに動作しないのはなぜですか?を見てみましょう。 この質問 を見てみると、ケースは同じようです。
どのように解決するのですか?
プロパティのケーシングを
propTypes
:
- List.PropTypes = {
+ List.propTypes = {
todos: PropTypes.array.isRequired,
};
正しい :
List.propTypes = {
todos: PropTypes.array.isRequired,
};
(その
インスタンス
は小文字ですが、Class/Type は大文字です。インスタンスは
List.propTypes
. クラス/タイプは
PropTypes
.)
関連
-
[解決済み】<Router>の外側で<Link>を使用してはならない
-
[解決済み】Typescript react - モジュール ''react-materialize'' の宣言ファイルが見つかりませんでした。'path/to/module-name.js' は暗黙のうちに any 型を持ちます。
-
[解決済み] マテリアルUIセレクトフィールドのマルチセレクト
-
[解決済み] Next.jsでWebSocketを利用する
-
[解決済み] Webpack のコンパイルに失敗した
-
[解決済み] nextjsで異なる.envファイルを使用するには?
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React JSX内のループ
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
-
[解決済み】ReactのPropTypes。1つのプロップに対して異なるタイプのPropTypesを許可する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Warning.Itが表示されるのはなぜですか?Functions are not valid as a React child?
-
[解決済み] configuration.module に未知のプロパティ 'loaders' があります。
-
[解決済み] material-ui-pickers KeyboardDatePicker をモーメントで使用するには?
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] カスタマイズ素材UI チェックした場合としない場合の切り替え
-
[解決済み] ReactJS で inst.render が関数でないエラーが発生する
-
React はエラー TypeError を報告します。未定義のプロパティ 'XX' を読み取ることができない、問題は解決されました。
-
[解決済み] ReactコンポーネントのJest SnapshotテストにおけるSnapshotテストの仕組みとtoMatchSnapshot()関数は何をするのか?
-
[解決済み] 矢印本体を囲む予期せぬブロックステートメント
-
[解決済み] AxiosにCORSの問題が発生