[解決済み] validateDOMNesting警告React
2022-02-19 13:35:01
質問
全体としてクリックできるReactコンポーネントを持っていますが、中にボタンも入っています。
つまり、次のようなものです。
<Link to={'/path1'}>
...
<Link to={'path2'} />
...
</Link>
これは私が望む動作ですが、この警告が表示されます。
Warning: validateDOMNesting(...): <a> cannot appear as a descendant of <a>. See SearchResult > Link > a > ... > Link > a.
どの程度深刻に受け止めればいいのか、また回避策はあるのか?
解決方法は?
アンカータグのネスト(これは
<Link />
に変換されます)は、HTMLでは禁止されています。仮に望ましい結果が得られたとしても、それはあなたのブラウザが賢く、独自の回避策を持っているからにほかなりません。しかし、その動作はすべてのブラウザやプラットフォームで保証されるものではありません。
どの程度深刻に受け止めればいいのか?
上記の通り、かなり深刻と言えるでしょう。
回避策としては、どのようなものがあるでしょうか?
以下は回避策ではなく、私が考える「正しい実装」です。
ラッピング要素にナビゲーションをプログラム的に実装し、その上で
<Link />
をボタンに使用します。だから、次のようなものだ。
navigate = () => {
//push "path1" to history
}
render() {
return(
<div onClick={this.navigate}>
<Link to="path2">Some button</Link>
<Link to="path3">Some button</Link>
</div>
);
}
React Routerでのプログラムによるナビゲーションの詳細については、以下のリンクのいずれかを参照してください。
関連
-
[解決済み】<Router>の外側で<Link>を使用してはならない
-
[解決済み] Apolloクライアントでログアウトした後、ストアをリセットする
-
[解決済み] react - createMuiThemeとcreateThemeの違い。
-
[解決済み] configuration.module に未知のプロパティ 'loaders' があります。
-
[解決済み] ReactJs "インバリアント違反..." リアクトの古典的な問題
-
[解決済み] ReactコンポーネントのJest SnapshotテストにおけるSnapshotテストの仕組みとtoMatchSnapshot()関数は何をするのか?
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React JSX内のループ
-
[解決済み] Reactのこの3つの点は何をするところなのでしょうか?
-
[解決済み] React NativeとReactの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】React - 式は1つの親要素を持つ必要がありますか?
-
[解決済み] React テキストを挟んだ横長の仕切りを作る
-
[解決済み] SVGサークル内の画像にボーダーを追加する方法
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] sh: react-scripts: npm start の実行後にコマンドが見つからない。
-
[解決済み] Static HTML elements with event handlers require a role." を修正するにはどうすればよいですか?
-
[解決済み] Reactプロジェクトに.envファイルを追加する
-
[解決済み] Reactでグローバル変数を宣言する方法とは?
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React Router v4で履歴にプッシュする方法は?