次のようなページを作成します。
こちらのページを参考にしました。
Reactでいいねボタンを作ろう
プロジェクトの作成
npx create-react-app like-button --template typescript
サーバーの実行
cd like-button
yarn start
ブラウザーで
http://localhost:3000/
にアクセス
ソースの作成
src/App.tsx
import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<LikeButton />
</header>
</div>
);
}
function LikeButton() {
const [count,setCount] = useState(999);
const handleClick_plus = () => { setCount(prev => prev + 1); };
const handleClick_minus = () => { setCount(prev => prev - 1); };
return <div>
<span className="likeButton_plus" onClick={handleClick_plus}>+
</span>
{count}
<span className="likeButton_minus" onClick={handleClick_minus}>-
</span>
</div>
}
export default App;
src/App.css
.App {
text-align: center;
}
.App-logo {
height: 40vmin;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s linear;
}
}
.App-header {
background-color: #282c34;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: #61dafb;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.likeButton_plus {
background-color: green;
color: white;
padding: 0.8rem;
border-radius: 0.4rem;
cursor: pointer;
}
.likeButton_minus {
background-color: red;
color: white;
padding: 0.8rem;
border-radius: 0.4rem;
cursor: pointer;
}
ブラウザーで
http://localhost:3000/
にアクセス
次のバージョンで確認しました。
$ npx create-react-app --version
5.0.1