react로 tag만드는법
const Button = () => (
<button
onClick={ () => console.log("Clicked!")}
style={{backgroundColor:tomato,}}
>
Click Me
</button>
);
const Container = () => (
<div>
<Button />
</div>
)
ReactDOM.render(<Container />, root); //id가 root인 element에 Container을 넣는다는 뜻
react로 count앱 만들기
const root = document.querySelector("#root");
let counter = 0;
function upCounter() {
counter += 1;
}
function Container() {
return (
<div>
<h3>Total clicks: {counter}</h3>
<button onClick={upCounter}>Click Me</button>
</div>
);
}
ReactDOM.render(<Container />, root);
const root = document.querySelector("#root");
let counter = 0;
function upCounter() {
counter += 1;
render();
}
function render() {
ReactDOM.render(<Container />, root);
}
function Container() {
return (
<div>
<h3>Total clicks: {counter}</h3>
<button onClick={upCounter}>Click Me</button>
</div>
);
}
render();
React.useState() → console에 찍어보면 [undefined, f]라고 나온다.
const [counter, setCounter] = React.useState(0)
- 이 방식으로 배열에서 값을 빼올 수 있다.
- ex) const num = [1, 2] 라고 했을때 const [first, second] = num에서 first값은 1, second값은 2이다.
const root = document.querySelector("#root");
function App() {
const [counter, setCounter] = React.useState(0);
return (
<div>
<h3>Total clicks: {couter}</h3>
<button>Click Me</button>
</div>
);
}
ReactDOM.render(<App />, root);
setCounter에 argument를 넣으면 넣은 argument의 값이 couter의 값이 된다.
setCounter함수는 리렌더링도 해준다 !
- ReactDOM.render(, root)을 해준다는 말!
const root = document.querySelector("#root");
function App() {
const [counter, setCounter] = React.useState(0);
const onClick = () => {
setCounter(counter + 1);
}
return (
<div>
<h3>Total clicks: {couter}</h3>
<button>Click Me</button>
</div>
);
}
ReactDOM.render(<App />, root);
만약 현재 state를 바탕으로 다음 state를 계산해내고 싶다면 함수를 이용하는 방법이 더 안전하다.
setCounter(counter + 1) → setCounter( (preNum) ⇒ preNum + 1);
react로 분을 시간으로 바꿔주는 웹앱만들기
function App() {
const [minutes, setMinutes] = React.useState("");
const onChange = e => {
setMinutes(e.target.value);
};
return (
<div>
<h1>Super Converter</h1>
<div>
<label htmlFor="minutes">minutes</label>
<input
value={minutes}
onChange={onChange}
type="number"
placeholder="minutes"
id="minutes"
/>
</div>
<div>
<label htmlFor="hours">hours</label>
<input
value={minutes / 60}
type="number"
placeholder="hours"
id="hours"
disabled
/>
</div>
</div>
);
}
const root = document.querySelector("#root");
ReactDOM.render(<App />, root);
function App() {
const [minutes, setMinutes] = React.useState(0);
const [flipped, setFlipped] = React.useState(false);
const onChange = e => {
setMinutes(e.target.value);
};
const onFlip = () => {
setFlipped( current => !current )
}
return (
<div>
<h1>Super Converter</h1>
<div>
<label htmlFor="minutes">minutes</label>
<input
value={minutes}
onChange={onChange}
type="number"
placeholder="minutes"
id="minutes"
/>
</div>
<div>
<label htmlFor="hours">hours</label>
<input
value={minutes / 60}
type="number"
placeholder="hours"
id="hours"
disabled
/>
</div>
<button onClick={onFlip}>flip</button>
</div>
);
}
const root = document.querySelector("#root");
ReactDOM.render(<App />, root);
hours의 input의 value는 minutes
minutes의 input의 value는 minutes * 60
function App() {
const [amount, setAmount] = React.useState("");
const [flipped, setFlipped] = React.useState(false);
const onChange = e => {
setAmount(e.target.value);
};
const onFlip = () => {
setFlipped( current => !current )
}
return (
<div>
<h1>Super Converter</h1>
<div>
<label htmlFor="minutes">minutes</label>
<input
value={flipped ? amount * 60 : amount}
onChange={onChange}
type="number"
placeholder="minutes"
id="minutes"
disabled={flipped}
/>
</div>
<div>
<label htmlFor="hours">hours</label>
<input
value={flipped ? amount : Math.round(amount / 60)}
type="number"
placeholder="hours"
id="hours"
disabled={!flipped}
/>
</div>
<button onClick={onFlip}>flip</button>
</div>
);
}
const root = document.querySelector("#root");
ReactDOM.render(<App />, root);
index가 xx이면
index가 0이면
ndex가 0이면 보여주기
function App() {
const [index, setIndex] = React.useState("xx");
const onSelect = e => {
setIndex(e.target.value);
};
return (
<div>
<h1>Super Converter</h1>
<select value={index} onChange={onSelect}>
<option value="xx">Select options</option>
<option value="0">Minutes & Hours</option>
<option value="1">Km & Miles</option>
</select>
<hr />
{index === "xx" ? <div>Select options</div> : null}
{index === "0" ? <MinutesToHours /> : null}
{index === "1" ? <KmToMiles /> : null}
</div>
);
}