-
글쓴이글
-
2021년 10월 4일 01:40 #16007
노진구참가자안녕하세요, 선생님,
개별 따봉 기능 구현에서 함수를 직접만들어 이벤트 핸들러에 등록 시킬 때
<span onClick={ onClick(idx) }>?</span> 로 하면 오류가 발생되고
<span onClick={ () => { onClick(idx) }}>?</span> 로 하면 정상 실행이 되는지 이해가
되지 않아 질문드립니다.
import './App.css';
import React, { useState } from 'react';function App() {
let [changeTitle, setChangeTitle] = useState(['남자 코트 추천', '강남 우동 맛집', '강북 우동 맛집']);
let [tabon, setTabon] = useState([0, 0, 0])
let [modal, setModal] = useState(false)const onClick = idx => {
let count = [...tabon];
count[idx] += 1
setTabon(count)
}const onClick1 = e => {
const newArray = [...changeTitle];
(newArray[0] === '남자 코트 추천') ? newArray[0] = '여자 코트 추천' : newArray[0] = '남자 코트 추천'
setChangeTitle( newArray );
}const onClickSort = (e) => {
let changeSortTitle = [...changeTitle].sort();
setChangeTitle(changeSortTitle)
}const onClickModal = e => {
setModal(!modal)
}return (
<div className="App">
<div className='black-nav'>
<div>My Dev Blog</div>
</div>
<div classNAme="buttons">
<button onClick={onClickSort}>상품 정렬</button>
<button onClick={onClick1}>성별 변경</button>
<button onClick={onClickModal}>{ modal ? "모달 닫기" : "모달 열기"}</button>
</div>{
changeTitle.map( (_, idx) => {
return (
<div className="list">
<h3> { changeTitle[idx] } <span onClick={ () => { onClick(idx) }}>?</span>{tabon[idx]}</h3>
<p>2월 17일 발행</p>
<hr />
</div>
)
})
}{
modal ? <Modal /> : null
}
</div>
);}
const Modal = () => {
return (
<div className="modal">
<h2>제목</h2>
<p>날짜</p>
<p>상세내용</p>
</div>
)
}export default App;
2021년 10월 4일 09:47 #16034
codingapple키 마스터onClick 안에는 콜백함수를 넣어야합니다
콜백함수는 원래 함수(파라미터) 이런 식으로 파라미터 넣어서 실행할 수 없습니다
만약 그렇게 한다면
onClick={함수1(파라미터)}
이러면 함수가 실행되고난 값이 그 자리에 남는거랑 똑같이 동작합니다
onClick={함수1실행하고남은값} 이게 실행이 되겠군요
-
글쓴이글
- 답변은 로그인 후 가능합니다.