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

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

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

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

React.js

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

Q&A

解決済

1回答

1038閲覧

React Routerの【Link to】でページ遷移を実現したい

shirokuma-dog

総合スコア0

Router

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

React.js

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

0グッド

0クリップ

投稿2021/06/15 05:57

編集2021/06/15 06:49

初めて質問させていただきます。
表現が不足する部分もあるかもしれませんがご了承ください。

前提・実現したいこと

Rails6の環境でReactを導入中で、ページ遷移を実現したいです。
現在では、ブラウザの入力欄に「http://localhost:3001/admin/login」
とアクセスすると
イメージ説明

このようになり、
同じくブラウザの入力欄に「http://localhost:3001/admin/top」
とアクセスすると

イメージ説明

このようになります。

また、ブラウザの入力欄に「http://localhost:3001/admin/login」
とアクセスし、「管理画面の一覧ページへ」リンクを押すと、

イメージ説明

このようになります。
なので、「管理画面の一覧ページへ」リンクを押した際に

イメージ説明

このようになってほしいです。

該当のソースコード

以下、各種ファイルおよびディレクトリ構成を記載します。

(ディレクトリ構成)
イメージ説明

「app.js」

react

1//export default App; 2import React, { Component } from 'react'; 3import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom'; 4 5import Header from './top/header'; 6import MainLogin from './top/main_login'; 7import Index from './top/index'; 8import Footer from './top/footer'; 9 10export default class App extends Component { 11 12 render() { 13 return ( 14 <div> 15 <Router> 16 <Switch> 17 <Route path="/admin/login"> 18 <Header/> 19 <MainLogin/> 20 <Index/> 21 <Footer/> 22 </Route> 23 <Route exact path='/admin/top'> 24 <Index/> 25 </Route> 26 </Switch> 27 </Router> 28 </div> 29 ); 30 } 31} 32

「header.js」

react

1import React, { Component } from 'react'; 2 3export default class Header extends Component { 4 render() { 5 return ( 6 <nav style={{ background: "#666" }}> 7 <ul style={{ display: 'flex', listStyle: 'none' }}> 8 <li style={{ margin: 10 }}><a href="/" style={{ color: "#fff", textDecoration: 'none' }}>管理画面ログイン画面</a></li> 9 </ul> 10 </nav> 11 ); 12 } 13} 14

「main_login.js」

react

1//export default App; 2import React, { Component } from 'react'; 3import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom'; 4 5export default class MainLogin extends Component { 6 render() { 7 return ( 8 <div> 9 <h1>Top#login</h1> 10 <p>Find me in app/views/admin/login.html.erb</p> 11 </div> 12 ); 13 } 14}

「index.js」

react

1import React, { Component } from 'react'; 2import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom'; 3import Top from './top'; 4 5export default class Index extends Component { 6 render() { 7 return ( 8 <div> 9 <Router> 10 <Link to={`/admin/top`}>管理画面の一覧ページへ</Link> 11 <Switch> 12 <Route path="/admin/top" component={Top}/> 13 </Switch> 14 </Router> 15 </div> 16 ); 17 } 18}

「footer.js」

react

1import React, { Component } from 'react'; 2 3export default class Footer extends Component { 4 render() { 5 return ( 6 <div> 7 {/*フッター*/} 8 <footer style={{ height: 12, background: "#666", color: "#fff", padding: 12 }}>フッター</footer> 9 </div> 10 ); 11 } 12}

各種jsファイルに関しまして、修正方法を教えていただけると幸いです。
よろしくお願いいたします

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

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

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

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

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

guest

回答1

0

自己解決

<Router>の中に<Router>を作っていたことが原因でした。
なので、「index.js」の<Router>を削除することで対応できました。
見ていた方々には申し訳ないですが、ありがとうございました。

投稿2021/06/15 14:44

shirokuma-dog

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問