質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1813閲覧

react-routerエラー <Router>のなかで<Link>をしているのに怒られてしまう

hyakkaozisann

総合スコア9

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2019/11/30 12:55

編集2019/11/30 12:56

こちらのサイトでreact入門中なのですがreact-routerのLinkを使うとエラーが起きてしまいます。

Invariant failed: You should not use <Link> outside a <Router>
<Router>の中じゃないとこで<Link>使ったらあかんでという意味だと思うのですがちゃんと中で使っています。

発生している問題・エラーメッセージ

Invariant failed: You should not use <Link> outside a <Router>

該当のソースコード

react

1mport React from "react"; 2import ReactDOM from "react-dom"; 3import { BrowserRouter as Router, Route } from "react-router-dom"; 4 5 6import Layout from "./pages/Layout"; 7import Featured from "./pages/Featured"; 8import Archives from "./pages/Archives"; 9import Settings from "./pages/Settings"; 10 11const app = document.getElementById('app'); 12 13ReactDOM.render(<Layout />, app); 14ReactDOM.render( 15 <Router> 16 <Layout> 17 <Route exact path="/" component={Featured}></Route> 18 <Route path="/archives" component={Archives}></Route> 19 <Route path="/settings" component={Settings}></Route> 20 </Layout> 21 </Router>, 22app);

react

1import React from "react"; 2import { Link } from "react-router-dom"; 3 4export default class Layout extends React.Component { 5 render() { 6 console.log("動いとるよ") 7 return ( 8 <div> 9 <h1>KillerNews.net</h1> 10 {this.props.children} 11 <Link to="archives">archives</Link>, 12 <Link to="settings">settings</Link> 13 </div> 14 ); 15 } 16} 17

試したこと

react-router react-router-demoのダウングレード、こちらの解決策
どちらもダメでした

補足情報(FW/ツールのバージョンなど)

イメージ説明
イメージ説明
イメージ説明

reactの構造などもあまり理解できていないので必要な情報があればすぐに教えてください
よろしくおねがいします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは
ご質問のコードにある、以下の部分

jsx

1const app = document.getElementById('app'); 2 3ReactDOM.render(<Layout />, app); 4ReactDOM.render( 5 <Router> 6 <Layout> 7 <Route exact path="/" component={Featured}></Route> 8 <Route path="/archives" component={Archives}></Route> 9 <Route path="/settings" component={Settings}></Route> 10 </Layout> 11 </Router>, 12app);

で、 ReactDOM.render を2回行っていますが、ひとつ目の下記の行

ReactDOM.render(<Layout />, app);

を削除してみるといかがでしょうか?

投稿2019/11/30 13:24

jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hyakkaozisann

2019/12/01 04:56

「やられた」と思ってしまいました。 とても助かりました、ありがとうございます!!
jun68ykt

2019/12/01 09:16

どういたしまして。 > とても助かりました とのことで、よかったです????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問