리액트로 westagram이 잘 돌아가는 모습을 보며 좋아했엇는데...
지난 주 수요일부터 Github를 이용해 팀별로 westagram 코드를 관리하고, 동적인 요소를 넣기 위해 Event를 배우기 시작하며 시간이 어떻게 지나갔는지도 모르겠다.
며칠 간의 기록을 오늘에서야 정리하려고 한다.
아직 뜬구름처럼 남아있는 내용들이라 구체적이지 않을 수 있고, 횡설수설하는 것처럼 보일 수도 있다. 잊지 않기 위해 기록으로 남기고 추후에 머리 속에서 정리가 되거든 다시 한 번 수정을 할 계획이다.
// bad idValidation: this.validationMode === 'idCheck' ? !!(value.indexOf('@') + 1) ? (this.idValidation = true) : (this.idValidation = false) : this.idValidation ? (this.idValidation = true) : (this.idValidation = false), // good if (name === 'id') { value.indexOf('@') !== -1 ? this.setState({ idValidation: true }) : this.setState({ idValidation: false }); }
// good if (name === 'id') { value.indexOf('@') !== -1 ? this.setState({ idValidation: true }) : this.setState({ idValidation: false }); } // bad validationCheck = (name, value) => { this.setState({ validationMode: name === 'id' ? (this.validationMode = 'idCheck') : (this.validationMode = 'pwCheck'), idValidation: this.validationMode === 'idCheck' ? !!(value.indexOf('@') + 1) ? (this.idValidation = true) : (this.idValidation = false) : this.idValidation ? (this.idValidation = true) : (this.idValidation = false), pwValidation: this.validationMode !== 'idCheck' ? value.length > 4 ? (this.pwValidation = true) : (this.pwValidation = false) : this.pwValidation ? (this.pwValidation = true) : (this.pwValidation = false), }); };
// 부모 컴포넌트 <InputBox data={this.state.pwInput} transferNameValue={this.validationCheck} /> // 자식 컴포넌트 class InputBox extends Component { constructor() { super(); } giveValueToParent = e => { const { name, value } = e.target; this.props.transferNameValue(name, value); }; render() { return ( <> <input name={this.props.data.name} type={this.props.data.type} placeholder={this.props.data.placeholder} onChange={this.giveValueToParent} /> </>
1) Login 페이지 랜더링
2) 도중에 자식 컴포넌트 만나서 자식 컴포넌트 먼저 렌더링
3) 자식 컴포넌트에서 호출된 함수 실행
4) 자식 컴포넌트에서 value를 인자로 부모 컴포넌트에 전달
5) 부모 컴포넌트의 함수 실행
6) Login 페이지 나머지 랜더링
@
포함 / PW - 5글자 이상:: 주말에 다시 한 번 코드를 짜봐야겠다.
:: state로 부모 컴포넌트에서 자식 컴포넌트로 전부다 넘겨주면 된다? 이게 상향식인건가?!