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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

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

Q&A

0回答

1036閲覧

各モーダルにそれぞれ別のページへ遷移できるボタンを作りたい

storyteller

総合スコア8

Router

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

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

0グッド

0クリップ

投稿2020/06/19 10:06

編集2020/06/19 10:09

前提・実現したいこと

Reactについての質問です。
react-routerを使ってLinkを作り、各モーダルにそれぞれ別のページへ遷移できるボタンを作りたいです。

発生している問題・試したこと

const itemList = [
{
id: 'buttongame',
name: 'Button Game',
image: '',
introduction: '',
},

のところに同じように管理したくてLinkを生成しても上手く持ってくることができません。
言葉足らずかもせれませんが、コメントいただけると幸いです。

該当のソースコード

Main

1import React from 'react'; 2import Item from './Item'; 3//今はreact-router-domを書いていないです 4 5class Main extends React.Component { 6 render() { 7 const itemList = [ 8 { 9 id: 'buttongame', 10 name: 'Button Game', 11 image: '', 12 introduction: '', 13 }, 14 { 15 id: 'quizgame', 16 name: 'Quiz Game', 17 image: '', 18 introduction: '', 19 }, 20 { 21 id: 'slotgame', 22 name: 'Slot Machine', 23 image: '', 24 introduction: '', 25 }, 26 { 27 id: 'typegame', 28 name: 'Typing Game', 29 image: '', 30 introduction: '', 31 }, 32 ]; 33 34 return ( 35 <div id="about-section" className='main-wrapper'> 36 <div className='main'> 37 <div className='copy-container'> 38 <h1>Hello, World.</h1> 39 </div> 40 <div className='item-container'> 41 <h3 id="gemes-section">aaa</h3> 42 {itemList.map((itemList) => { 43 return ( 44 <Item 45 id={itemList.id} 46 name={itemList.name} 47 image={itemList.image} 48 introduction={itemList.introduction} 49 /> 50 ); 51 })} 52 </div> 53 </div> 54 </div> 55 ); 56 } 57} 58 59export default Main;

Item

1import React from 'react'; 2import { BrowserRouter as Router, 3 Route, 4 Link, 5 Switch } from 'react-router-dom';//今は何も記述してないです 6 7class Item extends React.Component { 8 constructor(props) { 9 super(props); 10 this.state = {isModalOpen: false}; 11 } 12 13 handleClickItem() { 14 this.setState({isModalOpen: true}); 15 } 16 17 handleClickClose() { 18 this.setState({isModalOpen: false}); 19 } 20 21 render() { 22 let modal; 23 if (this.state.isModalOpen) { 24 modal = ( 25 <div className='modal'> 26 <div className='modal-inner'> 27 <div className='modal-header'></div> 28 <div className='modal-introduction'> 29 <h2>{this.props.name}</h2> 30 <p>{this.props.introduction}</p> 31 32         //この辺りにLinkを貼りたい 33 </div> 34 <button 35 className='modal-close-btn' 36 onClick={() => this.handleClickClose()} 37 > 38 とじる 39 </button> 40 </div> 41 </div> 42 ); 43 } 44 45 return ( 46 <div className='card'> 47 <div 48 className='item' 49 onClick={() => {this.handleClickItem()}} 50 > 51 <p>{this.props.name}</p> 52 <img src={this.props.image} /> 53 </div> 54 {modal} 55 </div> 56 ); 57 } 58} 59 60export default Item;

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

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

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

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

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

hoshi-takanori

2020/06/19 11:21

itemList にリンク先のパスを追加して <Link to={this.props.link}>リンク</Link> とかすればいいのでは。
storyteller

2020/06/24 05:33

回答ありがとうございます! 返信遅くなってしまって申し訳ありません。 それでもエラーが出てしまうのですが、他の問題かもです… 丁寧にありがとうございます。
storyteller

2020/06/24 06:53

追加で質問すみません。 リンクではなく、配列でurlを入れると %7Bthis.props.id%7D となり、受け渡しできないです。 解決方法をご教授いただけないですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問