button색 바꾸기 (삼항연산자)
🌎 버튼색 바꾸기 구현
🌎 전체 코드
class LoginYj extends React.Component {
constructor() {
super();
this.state = { id: "", pw: "" };
}
goToMain = () => {
this.props.history.push("/main-yeonju");
};
handleidInput = (event) => {
this.setState({
[event.target.id]: event.target.value,
});
};
changeHandlerBgColor = () => {
return this.state.id.includes("@") && this.state.pw.length >= 5
? "blue"
: "";
};
render
<input
className="inputId"
type="text"
placeholder="전화번호, 사용자 이름 또는 이메일"
onChange={this.handleInput}
name="id"
/>
<input
className="inputPw"
type="password"
placeholder="비밀번호"
onChange={this.handleInput}
name="pw"
/>
<div className="login">
<button
className={this.changeHandlerBgColor()}
onClick={this.changeButton}
>
로그인
</button>
</div>
진행과정
class LoginYj extends React.Component {
constructor() {
super();
this.state = { id: "", pw: "" };
}
goToMain = () => {
this.props.history.push("/main-yeonju");
};
handleidInput = (event) => {
this.setState({
[event.target.id]: event.target.value,
});
};
changeHandlerBgColor = () => {
return this.state.id.includes("@") && this.state.pw.length >= 5
? "blue"
: "";
};
<input
className="inputId"
type="text"
placeholder="전화번호, 사용자 이름 또는 이메일"
onChange={this.handleInput}
name="id"
/>
<input
className="inputPw"
type="password"
placeholder="비밀번호"
onChange={this.handleInput}
name="pw"
/>
<div className="login">
<button
className={this.changeHandlerBgColor()}
onClick={this.changeButton}
>
로그인
</button>
</div>
id와pw input에 같은 함수를 걸어주면 됐지만 state값이 서로 다르기 때문에
어떻게 하면 좋을까..하고 다른분들의 코드를 하나씩 찾아 보았다
input에 onChange 걸어주기
state
값으로 id와 pw를 빈스트링으로 설정해줬다. 여기서 onChange가 일어나면 handleInput이 실행이 되게 함수를 걸어줬다 input 태그에는 name이라는 속성이 있는데 input 이름을 지어준 name
의 속성 덕에 handleInput
의 함수를 합칠 수 있다. name 속성은 value처럼 e.target
속성으로 가져올 수 있다.
이것을 계산된 속성명 이라 한다.
계산된 속성명
객체의 속성값 일부가 이미 변수로 존재한다면 이름만 적어주면 된다.
꺽쇠괄호 [] 로 속성 이름을 감싸면 이름을 동적으로 만들 수 있다.
괄호에는 내장함수, 메서드, 계산식, 변수 를 넣을 수 있다.
handleInput = (event) => {
this.setState({
[event.target.name]: event.target.value,
});
};
input창에 text가 입력되었을때 함수가 실행되며 빈스트링이 setstate 된다!
console.log 창을 확인해보면 input창에 사용자가 치는 text값이 그대로 찍힌다
조건에 충족했을 때 button색 바꾸기 (삼항연산자)
button 에 changeHandlerBgColor 함수를 호출하였고
이 함수는 아이디에 @ 포함되거나 패스워드 길이가 5 이상일 때에만 blue로 색깔이 변경되고 그렇지 않으면 실행될 수 없게 빈스트링을 넣어주었다!
Author And Source
이 문제에 관하여(button색 바꾸기 (삼항연산자)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@duswn38/button-색상-바꾸기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)