import React,{Component} from "react";
class Counter extends Component{
constructor(props){
super(props);
this.state={
number:0,
}
}
render(){
const {number}=this.state
return (
<div>
<h1>{number}</h1>
<button
onClick={()=>{this.setState({number:number+1})
}}
>+1</button>
</div>
)
}
}
export default Counter
super(props)
호출해야 한다.this.state
값에 초깃값 설정const {number}=this.state
onClick={()=>{this.setState({number:number+1})}
class Counter extends Component{
state={
number:0,
fixedNumber:0,
}
render(){..}}
뭐야.. 간단하네..
this.setState((prevState,props) ⇒{return{ }})
prevState
: 기존상태 props
: 현재 지니고 있는 props (생략가능)
<button
onClick={()=>{
this.setState(prevState =>{
return {
number:prevState.number + 1}})
this.setState(prevState =>{
return {
number:prevState.number + 1}})
}}
>+1
</button>
const array = [1,2]
const [a,b] = array
→ a = array[0], b = array[1]
import React,{useState} from "react";
const Say = () =>{
const[message,setMessage] = useState('');
const onClickEnter = () => setMessage('어서오세요')
const onClickLeave = () => setMessage('안녕히가세요')
return(
<div>
<button onClick={onClickEnter}>입장</button>
<button onClick={onClickLeave}>퇴장</button>
<h1>{message}</h1>
</div>
)
}
export default Say;
useState 함수의 인자에는 상태의 초기값을 넣어준다.
const[message,setMessage] = useState('');
첫번째 원소는 현재 상태,
두번째는 상태를 바꿔주는 setter 함수
버튼으로 글자색 바꿔보기
const[color,setColor] = useState('black')
<h1 style={{color}}>{message}</h1>
<button style={{color:'red'}}
onClick={()=>{setColor("red")}}>
빨간색
</button>
const object ={a:1,b:2,c:3}
const ObjectCopy = { ...object,b:2};
{ ...object,b:2};
사본 만들기
const array =[
{id:1,value:true},
{id:2,value:false},
{id:3,value:true}]
let nextArray = array.concat({id:4});
nextArray.filter(item=> item.id !== 2);
= id 가 2가 아닌 것만 남긴다 → 2를 제거한다.
nextArray.map(item=> (item.id===1 ? {...item, value:false} : item))
= id 가 1이면 ? item값의 value 를 바꿔준다.
1이 아니면? 원래 item 그대로 가져온다