props와 state의 차이
//class컴포넌트 사용
//App컴포넌트에서 TEST 컴포넌트로 데이터를 전달하려고한다
//APP컴포넌트
state = { name : "재원" } //state라는 프로퍼티 생성
updateName() {
this.setState({ name: "성철" })
} //state 업데이트
render() {
return (
<div className="App">
<TEST nameData={this.state.name} //this를 통해 생성한 state사용
fnData={this.updateName.bind(this)}/>
</div>
)}
//TEST컴포넌트
render() {
return <h1>Hello, {this.props.name}</h1>;
}
//함수컴포넌트 사용
//Hook 사용함
//useState는 State 변수의 초기값을 매개변수로 전달하여 호출 > 결과값으로는 배열을 반환
//반환된 배열에서는 useState 함수를 호출할 때 설정한 초기값이
//할당된 변수와 해당 변수를 수정하기 위한 Set 함수가 포함되어 있음
//APP컴포넌트
const [name, setName] = useState(""); //const [변수명, Set함수명] = useState (데이터 초기값);
const updateName = () => setName("성철")
return (
<div className="App">
<TEST nameData={name} fnData={updateName}/>
</div>
//TEST컴포넌트
const TEST = (props) => {
return <div>{props.name}</div>
}
Props가 컴포넌트간에 전달받는 것이라고 했는데 자식에서 부모로도 전달할 수 있는가
가능하다.
callback함수를 이용 (setter내려주기)
//callback 함수사용
//APP 상위컴포넌트
const updateName = (name) => {
console.log(name) //재원
}
return (
<div className="App">
<TEST fnData={updateName}/>
</div>
//TEST 자식컴포넌트
const TEST = (props) => {
const [name, setName] = useState("재원");
return <div>{()=>props.fnData(name)}</div>
}
데이터 전달 방식중 단방향, 양방향 장단점. 그럼 리액트는 어떤 방식을 사용하고 있나요?
리액트는 “하향식(top-down)” 또는 “단방향식” 흐름이다.


SPA Framework에서는 React
양방향의 경우 2개로 다시 나눌 수 있다.
반이중의 경우 양쪽 방향에서 통신이 가능하지만 동시에는 통신이 불가능하다.
(ex. 무전기)
전이중은 반이중과 다르게 양쪽 방향에서 동시에 같이 주고 받을 수 있다.
(ex. 전화기)

SPA Framework에서는 Vue.js, Angular