• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 개별 따봉 관련 질문드립니다.

개별 따봉 관련 질문드립니다.

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #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;

    #16034

    codingapple
    키 마스터

    onClick 안에는 콜백함수를 넣어야합니다

    콜백함수는 원래 함수(파라미터) 이런 식으로 파라미터 넣어서 실행할 수 없습니다

    만약 그렇게 한다면 

    onClick={함수1(파라미터)}

    이러면 함수가 실행되고난 값이 그 자리에 남는거랑 똑같이 동작합니다

    onClick={함수1실행하고남은값} 이게 실행이 되겠군요 

     

    #16049

    노진구
    참가자

    "모든 이벤트 핸들러(예: onClick, onChange 등등)안에는 콜백함수를 넣어야 한다!!!"로 이해하면 될까요?.

    답변 주셔서 정말 감사합니다. 쌤!!

    #16052

    codingapple
    키 마스터

    #16055

    노진구
    참가자

    답변 너무 감사합니다 !!!

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠