콜백 함수 내에서 this를 사용하고 싶다면 생성자에서 바인딩을 해주어야 한다. 이는 React 내에서의 특징이 이나리 일반적인 JavaScript에 특징이다. 만약 매번 바인딩 하기 싫다면 다음과 같은 방법을 사용해도 된다.
publick class fiedls syntax :
1 2 3 4 5 6 7 8 9 10 11
classLoggingButtonextendsReact.Component{ // This syntax ensures `this` is bound within handleClick. // Warning: this is *experimental* syntax. handleClick = () => { console.log("this is:", this); };
functionListItem(props) { const value = props.value; return ( // Wrong! There is no need to specify the key here: <likey={value.toString()}>{value}</li> ); }
functionNumberList(props) { const numbers = props.numbers; const listItems = numbers.map((number) => ( // Wrong! The key should have been specified here: <ListItemvalue={number} /> )); return<ul>{listItems}</ul>; }
기본적으로 폼을 제출하면 새로운 페이지로 이동하는 동작을 수행한다. 원한다면 사용하면 되는데 일반적으로는 Javascript를 통해서 제출을 처리하고 사용자가 입력한 값에 접근하는 방법을 사용한다. 이런 방법을 사용하기 위해서는 controlled components 라고 불리는 기술을 사용해야 한다.
Controlled Components
일반적으로 html 에서 input, textarea, selct와 같은 폼 엘리먼트는 사용자의 입력을 기반으로 자신의 state를 관리하고 업데이트 한다. React서는 setState를 해야 state를 변경할 수 있으므로 사용자의 입력을 철리하려면 관리하는 state를 추가해야 한다. React에 의해 값이 제어되는 입력 폼 엘리먼트를 controlled component라고 한다.
classEssayFormextendsReact.Component{ constructor(props) { super(props); this.state = { value: "Please write an essay about your favorite DOM element.", };
사실 제어 컴포넌트를 사용하느것이 해보면 좀 귀찮은 작업이라는 것을 알게 된다. 또한 다른 앱을 리액트 앱으로 바꾸려 할때에도 이는 정말로 귀찮은 작업으로 다가올 수 있다. 이때 대안으로 사용할 수 있는 비제어 컴포넌트가 있는데 자세한건 홈페이지에서 문서를 찾아 보길 바란다.
Fully-Fledged Solutions
Formik 이 완벽한 해결을 줄수 있다. 근데 이것도 기본적인 원칙은 위에서 설명한 것과 같기 때문에 기본적인 원칙을 모르면 어렵다. 기본적인 원칙을 공부하길 바란다.
IMAP4(Internet Message Access Protocol4) : 중앙 서버에서 메일을 관리, 접속하여 확인
SMTP
전자 메일 전송을 위한 표준 포로토콜 (TCP25) - 클라이언트 서버 통신
POP3
수신서버의 메일 박스에서 메일을 가져오고 삭제하는 프로토콜 (TCP110) , 아웃룩 같은 메일 클라이언트 프로그램에서 사용
IMAP4
메일서버로 접속하여 메일을 읽거나 삭제하는 프로토콜 (TCP 143) , IMAP4는 원하는 메일 메시지만 전송, 다중 접속 가능, 메일 보관함 연동 메일 서버의 자원 상률이 높아짐.
동작 과정
메일 서버 : MTA(Mail Transfer Agent) - 메일 전송 메일 클라이언트 : MUA(Mail User Agent) - 메일 송수신 프로그램 MDA(Mail Delivery Agent) : MTA가 수신한 메일을 수신한 우편함에 기록 MRA(Mail Retrieval Agent) : 리모트 서버의 우편함에서 사용자에게 메일을 가져오는 프로그램