μ²μ μ±μ λ€μ΄μμ λ λ‘λ© λ©μμ§λ₯Ό 보μ¬μ£Όκ³ μ½μΈλ€μ΄ λμ΄λλ©΄ λ‘λ© λ©μμ§λ₯Ό μ¨κΈ΄ ν μ½μΈλ€μ μ 리λ 리μ€νΈλ‘ 보μ¬μ£Όλλ‘ ν΄μΌ νλ€.
import { useState, useEffect } from "react";
function App() {
const [loading, setLoading] = useState(true);
const [coins, setCoins] = useState([]);
// μ»΄ν¬λνΈκ° μ²μ μμ±λμ λ fetchλ₯Ό μ΄μ©ν΄ μμ²μ λ³΄λΈ ν μλ΅μ λ°μμ¨λ€
useEffect(() => {
fetch("https://api.coinpaprika.com/v1/tickers")
.then((response) => response.json())
.then((data) => {
setCoins(data);
setLoading(false); // μ΄λ loading λ³μμ κ°λ λ°κΏμΌ νλ€
});
}, []);
return (
<div>
<h1>The Coins ({loading ? null : `(${coins.length})`)</h1>
{loading ? <strong>λ‘λ© μ€...</strong> : (
<ul>
{coins.map((coin) => (
<li key={coin.id}>
{coin.name} ({coin.symbol}): ${coin.quotes.USD.price} USD
</li>
))}
</ul>
)}
</div>
);
}
export default App;
μμμ λ°°μ΄ λ΄μ© 볡μ΅
const [amount, setAmount] = useState(0);
const [flipped, setFlipped] = useState(false);
const onChange = (event) => setAmount(event.target.value);
const onFlip = () => {
setFlipped((prev) => !prev);
reset();
};
const reset = () => setAmount(0);
return (
<div>
// μ€λ΅
<div>
<input
value={!flipped ? amount : amount * 36955}
onChange={onChange}
placeholder="USD"
type="number"
disabled={flipped}
/>
<input
value={flipped ? amount : amount * 0.000027}
onChange={onChange}
placeholder="BTC"
type="number"
disabled={!flipped}
/>
</div>
<button onClick={onFlip}>Flip</button>
<button onClick={reset}>Reset</button>
<hr />
// μ€λ΅
</div>
);