일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react
- dict
- EC2
- pandas
- lambda
- SAA
- Props
- 튜플
- wetube
- 중급파이썬
- RDS
- SSA
- docker
- Class
- flask
- socket io
- NeXT
- S3
- Vue
- merge
- 카톡
- 채팅
- MongoDB
- TypeScript
- git
- node
- crud
- 파이썬
- async
- AWS
- Today
- Total
초보 개발자
3-3 event, bind 본문
<Nav
data={this.state.content}
onPageChange={function (id) {
this.setState({
mode: "read",
selected_id: Number(id),
});
}.bind(this)}
></Nav>
class Nav extends Component {
render() {
const data = this.props.data;
let list = [];
for (var i = 0; i < data.length; i++) {
list.push(
<li key={data[i].id}>
<a
href={"/content/" + data[i].id}
onClick={function (id, e) {
e.preventDefault();
this.props.onPageChange(id);
}.bind(this, data[i].id)}
>
{data[i].desc}
</a>
</li>
);
}
return <ul>{list}</ul>;
}
App의 render안의 코드
let _title,
_desc = null;
if (this.state.mode === "welcome") {
_title = this.state.welcome.title;
_desc = this.state.welcome.desc;
} else if (this.state.mode === "read") {
_title = this.state.content[this.state.selected_id].title;
_desc = this.state.content[this.state.selected_id].desc;
}
먼저 Nav에 있는 li를 만들 때 클릭을하면 onPageChange함수가 발동하도록 하고 bind를 통해서 그것을 사용할 수 있도록 한다. 또한 bind 뒤에 값을 넣으면 함수에서 변수로 사용할 수 있기에 게시물의 번호를 id에 지정하여 onPageChange에 매개변수로 넣어주어 selected_id가 바뀌도록 하였다. select_id가 바뀐다면 랜더링을 다시하기때문에
_title = this.state.content[this.state.selected_id].title;
_desc = this.state.content[this.state.selected_id].desc; 이렇게 되어
우리가 선택한 게시물의 내용이
<Content title={_title} desc={_desc}></Content>
나오게 된다.
'React' 카테고리의 다른 글
5 CRUD Update (0) | 2021.09.05 |
---|---|
4 CRUD - C , shouldComponentUpdate (0) | 2021.09.05 |
3-2 event, bind (0) | 2021.09.03 |
3-1. state props (0) | 2021.09.03 |
2. props, components (0) | 2021.09.03 |