Contents
はじめに
React.js、使えたら便利だよなぁ、と思いつつ幾星霜。
知り合いがReactはいいぞと喧しいのでw
ちょっと時間ができたので真面目に取り組んでみることにした(´・ω・`)
真面目にと言いつつ専らChatGPTに教わる気満々なんですがw w
今回のおしながき
- Dockerでの環境構築
- React Routerでルーティングまで確認
Dockerでの環境構築
取り敢えず最低限動く環境を作ります。
https://qiita.com/aka_ebi/items/79dd54982aeeb72aecf6
こちらに従います。
reactのプロジェクト作成
$ npx create-react-app react-app
これで現在のディレクトリの配下に /react-app
ができるので、そちらにcd。
Dockerfileとdocker-compose.yml 作成
FROM node:20-alpine ENV NODE_ENV=development WORKDIR /usr/src/app COPY package.json package-lock.json . RUN npm install COPY . .
version: "3" services: react-app: #サービス名 build: . volumes: #バインドマウント - ./:/usr/src/app command: npm start ports: - "3000:3000"
それそれ起動
せっかちなので、作ったらまず立ち上げたい
$ docker compose up --build -d
それっぽい画面が動いたら、ひとまずOK
React Routerでルーティングまで確認
さて、ここで知人とワイの噛み合わない会話をば
ワイ> さて学習を始めたはいいんだが、ルーティングがわからんのじゃ
知人 > pagesフォルダにjsを放り込めばおk。別段やること無いじゃろ
鵜呑みにしかけたワイ、めちゃくちゃ調べた
それNext.jsじゃろがぃワレ
Next.jsはReact.js上で動くフレームワーク
ならばReact.jsから習得して→Next.jsを追って習得したいワイ
(いやそこまで思ってなかったんだけど前述のインストールコマンドから違っていた)
仕方ないから、React Routerを習得
インストール
まずreact-router-dom
をプロジェクトにインストール。
$ npm install react-router-dom
基本的なセットアップ
次に、react-router-dom
を使ってルーティングを設定。ここでは、BrowserRouter
, Routes
, Route
を使用します。
App.js
の例
import React from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import Home from './components/Home'; import About from './components/About'; import Contact from './components/Contact'; function App() { return ( <Router> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> </Routes> </Router> ); } export default App;
各コンポーネントの例
例えば、Home.js
, About.js
, Contact.js
といったコンポーネントを作成します。
Home.js
の例
import React from 'react'; function Home() { return ( <div> <h1>Home Page</h1> </div> ); } export default Home;
About.js
の例
import React from 'react'; function About() { return ( <div> <h1>About Page</h1> </div> ); } export default About;
Contact.js
の例
import React from 'react'; function Contact() { return ( <div> <h1>Contact Page</h1> </div> ); } export default Contact;
ここまでの段階でアドレスバーで http://localhost:3000/about
とか直リンすればルーティング通りに動きます。
コンポーネントらしく一手間入れます。
ナビゲーションの追加
ナビゲーションを追加するためには、Link
コンポーネントを使用します。
ナビゲーションバーの例
import React from 'react'; import { Link } from 'react-router-dom'; function Navbar() { return ( <nav> <ul> <li><Link to="/">Home</Link></li> <li><Link to="/about">About</Link></li> <li><Link to="/contact">Contact</Link></li> </ul> </nav> ); } export default Navbar;
このナビゲーションバーをApp.js
にインポートして使用します。
App.js
の更新
import React from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import Home from './components/Home'; import About from './components/About'; import Contact from './components/Contact'; import Navbar from './components/Navbar'; function App() { return ( <Router> <Navbar /> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> </Routes> </Router> ); } export default App;
画面上部にナビゲーションバー的なものが表示できていれば、OK
取り敢えず本日は以上。
終わりに
さて自称バックエンド屋のワイ、データがストアor取得できるサーバが欲しくなってきた。
qiitaなんかの有り物APIのデータをぐるぐるローテして遊ぶ。
あとjavascriptのギミックを入れたい。
それよりLaravelのスキルが中途半端なのでどうにかしないと…。