정의 및 특징
컴포넌트 제작
2.1 TAG
<header></header>
<nav><nav/>
<article></article>
2.2 Class & Function
class Subject extends Component
//
function Subject(props)
//
<Subject par1="..." par2= "...">
2.3 Import & Export
import React, {Component} from 'react'; // #1
/*...*/
export default Component; // #2
State
3.1 State & Props
❕외부의 Props와 내부의 State는 철저히 분리되어야 함
<Subject title ="..." sub ="...">
⇒ "..." 안에 들어갈 값들을 컴포넌트의 로 만들고 이를 Subject의 로 전달
Event
4.1 함수
4.1.1 정의 및 특징
'어떤 HTML을 그릴 것인가?' 에 대한 결정 함수
render 함수 안에서 this는 그 컴포넌트 자체를 가리킴
props, state 값이 바뀌면 render 함수가 다시 호출
⇒ render 함수 내의 컴포넌트들에게 있는 render 함수도 다시 호출
4.2 함수
4.2.1 정의 및 특징
// in Component
onClick = {function(e){
e.preventDefault;
this.setState({
_val : '...'
});
}
4.3 함수
4.3.1 정의
Create
5.1.1 form
<input type = "text" placeholder = "show"/> // text 레이아웃에 "show" 출력
<textarea placeholder = "show"/></textarea> //
5.1.2 배열에 원소 추가
⑴ : 원본을 바꿈 (낮은 효율)
⑵ : 원본을 바꾸지 않음
var tmp1 = this.state._array.concat({...}); // #1
var tmp2 = this.state._array.push({...}); //#2
var tmp3 = Array.from(this.state._array); // #3
object.assign(_array,tmp4); // #4
❕기존의 객체와 내용은 같지만 완전히 같은 객체라고 볼 수 없음
5.1.3 함수
⑴ 정의 및 특징
컴포넌트에 변경사항이 없는데 render함수가 실행되는 걸 막기위해 사용
인자로 , (바뀐 props, state)를 갖음
새롭게 바뀐 값()와 이전의 값()에 접근할 수 있음
❕push를 사용해 원본을 바꿨다면 와 가 같아서 함수를 사용할 수 없음
Update & delete
6.1 Update
6.1.1 문제점
<input value = {this.props.data.title}/> // this.props.data부분이 READ ONLY이므로 동작x
6.1.2 해결 방법
⑴ 컴포넌트안에서 가변적인 데이터로 state화 시킴
⑵ 함수를 정의하고 사용
constructor(props){
super(props);
this.state ={
title :this.props.data.title
}
}
<input value = {this.props.data.title}
onChange = { function(e){
this.setState({title : e.target.value}); // #1
}.bind(this)/>
// #1을 아래로 간결히 표현가능
this.setState({[e.target.name] : e.target.value});
❕의 도 위와 같은 방식으로 수정
6.2 delete
if(window.confirm()){
// delete
}
else{
// none
}