Open cheesepizza453 opened 7 months ago
이벤트를 사용할 때 주의 사항으로 틀린 것을 고르세요
리액트 프로젝트 내부에서 DOM에 이름을 다는 방법을 (_____)이라고 한다.
ref는 DOM을 (_____)할 때 사용한다.
리액트에 내장된 (_____) 함수를 사용하면 ref를 만들 수 있다.
컴포넌트의 안전한 처리를 위하여 ref는 주로 (_____)를 활용하여 메서드를 작성한다.
console.log(e)
console.log(e.target)
console.log(e.target.value)
위 3가지를 콘솔로 찍었을 때 어떤게 나오는지 말씀해보세요.
class EventPractice extends Component {
state = {
message: ''
}
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
alert(this.state.message);
this.setState({
message: ''
})
}
render() {
return (
<div>
<button onClick={this.handleClick}>확인</button>
</div>
)
}
}
위 클래스형 constructor에서 this를 사용할 때 바인딩(bind)을 붙여야하는 이유를 말씀해보세요.
객체 안에서 key를 '이것'으로 감싸면 그 안에 넣은 레퍼런스가 가리키는 실제 값이 key 값으로 사용됩니다. 이것은 무엇일까요?
주석 참고
import {Component} from ' react' ;
class EventPractice extends Component {
state = {
message: ''
}
constructor(props){
super();
this.handleChange = this.handleChange.bind(this); //<---- 요거 하는 이유가 뭐임
this.handleClick = this.handleClick.bind(this); //<---- 요거 하는 이유가 뭐임
}
handleChange(e){
this.setState({
message: e.target.value
});
}
handleClick(){
alert(this.state.message);
this.setState({
message: ''
});
}
render() {
return (
<div>
<h1>이벤트 연습</h1>
<input
type="text"
name="message"
placeholder="아무거나 입력해 보세요"
value={this.state.message}
onChange={
(e) => {
this.setState({
message: e.target.value
})
}
}
/>
<button onClick={
() => {
alert(this.state.message);
this.setState({
message: ''
});
}
}>확인
</button>
</div>
);
}
}
아래 컴포넌트를 호출 할때 setEnter / setLeave 에서 무슨 에러 날까요? 그 에러를 어케 해결해야할까여?
const SectionHomeCtaItem: React.FC<IData> = (props) => {
const refLottie = useRef<Player>(null);
const setEnter = useCallback(() => {
refLottie.current.setPlayerDirection(1);
refLottie.current.play();
}, []);
const setLeave = useCallback(() => {
refLottie.current.setPlayerDirection(-1);
}, []);
return (
<PlacerLink
href={props.link.href}
target={props.link.target}
legacyBehavior={true}
>
<S.Container onMouseEnter={setEnter} onMouseLeave={setLeave}>
<S.Lottie>
<Player
ref={refLottie}
src={props.lottie.src}
loop={false}
speed={0.8}
controls={true}
></Player>
</S.Lottie>
<S.Article>
<S.H5>{props.txtTitle}</S.H5>
<S.P>{props.txtSub}</S.P>
</S.Article>
</S.Container>
</PlacerLink>
);
};
export default SectionHomeCtaItem;
[향훈퀴즈]
1.
function BlackDog() {
this.name = '흰둥이';
this.bark = function (){
this.name = '노랭이'
console.log(this.name)
}
}
const blackDog = new BlackDog();
console.log(blackDog)
blackDog.bark(); // ??: 멍멍!
console.log(blackDog)
2.
function BlackDog() {
this.name = '흰둥이';
return {};
}
const blackDog = new BlackDog();
console.log(blackDog)
function BlackDog() {
this.name = '흰둥이';
return 0;
}
const blackDog = new BlackDog();
console.log(blackDog)
3.
console.log(100 >> 1);
console.log(100 << 1);
4.
const arr = [1,2,3,4]
const arr2 = arr;
arr[0] = 5;
console.log(arr)
console.log(arr2)
console.log(arr === arr2)
let i = 0;
console.log(i++)
console.log(++i)
//예상되는 콘솔값은?
function BlackDog() {
this.name = '흰둥이';
return {};
}
const blackDog = new BlackDog();
console.log(blackDog)
function BlackDog() {
this.name = '흰둥이';
return 0;
}
const blackDog = new BlackDog();
console.log(blackDog)
const arr = [1,2,3,4]
const arr2 = arr;
arr[0] = 5;
console.log(arr)
console.log(arr2)
console.log(arr === arr2)
console.log(100 >> 1);
console.log(100 << 1);
다음은 알고리즘 문제입니다. 도전해보세요~!
아래의 코드가 실행시 출력되는 값을 쓰시오.
function sort() {
let arr = [3, 2, 1, 4];
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log(sort());
ref를 꼭 사용해야하는 상황을 대표적으로 세가지만 말해보세요