티스토리 뷰
728x90
자식에서 부모 컴포넌트로
이번 프로젝트에서 사용했던 방식
import React, { useState } from 'react';
function App() {
return (
<div className="App">
<Parent />
</div>
);
};
const Parent = (props) => {
const [data, setData] = useState("initial data");
...
panToNaver(lat, lng, zoom) {
this.setState({
center: { lat: lat, lng: lng },
zoom: zoom,
circlePosition: {
lat: lat,
lng: lng
}
});
}
...
return (
<>
<div>{data}</div>
<Child panToNaver={this.panToNaver.bind()} />
</>
);
};
const Child = (props) => {
return (
<>
<button onClick={() => props.panToNaver(place.latitude, place.longitude, 18);}>
send data to parent
</button>
</>
);
};
- 이번 프로젝트에서는 자식 컴포넌트로 function을 넘겨서, 자식 요소에서 그 function을 통해 부모 요소의 변수의 state를 변경시켜주었다.
- 여러 개의 부모 요소의 state를 다루고 싶을 때 function으로 묶어서 보내면편할것 같다.
결론적으로, 자식에서 부모 요소의 state를 변경시키고 싶을 때에는
부모에서 자식으로 setter를 전달하면 된다!!
// 출처: https://velog.io/@soral215/React-%EC%9E%90%EC%8B%9D-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EC%97%90%EC%84%9C-%EB%B6%80%EB%AA%A8%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%B4%EB%82%B4%EA%B8%B0
import React, { useState } from 'react';
function App() {
return (
<div className="App">
<Parent />
</div>
);
};
const Parent = (props) => {
const [data, setData] = useState("initial data");
return (
<>
<div>{data}</div>
<Child setData={setData} />
</>
);
};
const Child = (props) => {
return (
<>
<button onClick={() => props.setData("data from child")}>
send data to parent
</button>
</>
);
};
부모에서 자식 컴포넌트로
위에서도 봤듯이 부모에서 자식 컴포넌트로이 데이터 전달은 아래의 코드와 같이 한다.
- 부모 요소에서 자식 요소로 필요한 데이터들을 전달함
- 자식 요소에서는 props와 같은 변수로 데이터들을 전달 받고, props.{keyword} 의 형태로 데이터를 활요앟ㄴ다.
function App() {
return (
<div className="App">
<Parent />
</div>
);
};
const Parent = (props) => {
const [data, setData] = useState("initial data");
return (
<>
<Receiver_infos
id={props.location.pathname.substr(18)}
naver={props.panToNaver}
marker={props.markerPositions}
panToMarker = {props.panToMarker}/>
</>
);
};
const Child = (props) => {
return (
<>
<button onClick={() => props.panToMarker()}>
send data to parent
</button>
</>
);
};
728x90
'reactJS' 카테고리의 다른 글
reactJS + springboot 파일 불러오기 및 다운로드 구현하기 (2) (1) | 2022.04.26 |
---|---|
reactJS + springboot 파일 업로드 구현하기 (1) (0) | 2022.04.26 |
typescript 기초 + react 프로젝트 생성 (0) | 2022.02.03 |
reactJS + typescript 프로젝트 만들기 (0) | 2022.01.27 |
open-graph-scraper 사용하기 (0) | 2022.01.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- TypeScript
- 기초
- 이진탐색
- CORS
- level3
- programmers
- 이것이코딩테스트다
- 자바스크립트
- 소프티어
- 면접을 위한 CS 전공지식 노트
- springboot
- JavaScript
- html
- 상태관리
- css
- 파이썬
- 프로그래머스
- 노마드코더
- axios
- CS
- reactjs
- React
- 이코테
- redux
- dfs
- nomadcoder
- Hook
- React.FC
- 이것이 취업을 위한 코딩테스트다
- level1
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함