React
리액트 동적으로 CSS 클래스 설정하기
mellomello.made
2022. 8. 11. 09:06
1. label 태그에 스타일 적용하기
input에 아무것도 입력하지 않았을 때, Course Goal text red, border red, color green 으로 바뀐다.
return (
<form onSubmit={formSubmitHandler}>
<div className="form-control">
{/*아무것도 입력안하면 글자가 빨간색으로 바뀜-> 스타일 프롭스 추가해서 요구되는 객체를 전달한다 */}
<label style={{ color: !isVaild ? "red" : "black" }}>Course Goal</label>
<input
style={{
borderColor: !isVaild ? "red" : "black",
background: !isVaild ? "green" : "transparent",
}}
type="text"
onChange={goalInputChangeHandler}
/>
</div>
<Button type="submit">Add Goal</Button>
</form>
);
};
2. invaild 클래스를 동적으로 추가하기
CourseInpus.css
.form-control.invaild input {
border-color: red;
background: #ffd7d7;
}
.form-control.form-control.invaild label {
color: red;
}
CourseInput.js
const CourseInput = (props) => {
const [enteredValue, setEnteredValue] = useState("");
//사용자가 입력한 것이 유효한지 불리언 타입으로 체크
const [isVaild, setIsVaild] = useState(true);
const goalInputChangeHandler = (event) => {
//인풋에 입력이 시작되면 입력이 유효한 것을 볼 수 있다.
if (event.target.value.trim().length > 0) {
setIsVaild(true);
}
setEnteredValue(event.target.value);
};
const formSubmitHandler = (event) => {
event.preventDefault();
//공백입력한 경우 제외하는 메소드 trim, 0이면 입력값이 비었다는 말
if (enteredValue.trim().length === 0) {
//유효하지 않으면 false
setIsVaild(false);
return;
}
props.onAddGoal(enteredValue);
};
return (
<form onSubmit={formSubmitHandler}>
<div className={`form-control ${!isVaild ? "invaild" : ""}`}>
<label>Course Goal</label>
<input type="text" onChange={goalInputChangeHandler} />
</div>
<Button type="submit">Add Goal</Button>
</form>
);
};
중괄호를 추가하여 템플릿리터럴 사이에 콘텐츠를 넣으면 된다.
isVaild 값이 true가 아닌지 체크할 수 있는데 앞부분에 ! 느낌표 붙여준다.