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

home2 게시판 React 게시판 useEffect 사용시 렌더링 순서

useEffect 사용시 렌더링 순서

  • 이 주제에는 6개 답변, 2명 참여가 있으며 성훈2 년, 4 월 전에 전에 마지막으로 업데이트했습니다.
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 글쓴이
  • #74240

    성훈
    참가자
    function Detail(){ 
    let [alert, setAlert] = useState(true) 
    useEffect(()=>{ 
    setTimeout(()=>{ setAlert(false) }, 2000) 
    }, []) 
    
    return ( 
    { alert == true ? <div className="alert alert-warning"> 2초이내 구매시 할인 </div> : null } ) 
    }
    
    위의 코드에서 useEffect 쓰면 html이 먼저 렌더링 되니까 true일때 <div>안의 내용을 보여주고
    html이 실행된 후 useEffect 내의 함수가 실행되어 false 값으로 바뀌고 다시 html이 실행되어 false 값을 보여주는 순서인가요?
    #74256

    codingapple
    키 마스터
    넴 
    alert는 변수명으로 쓰면 안됩니다
    #74293

    성훈
    참가자
    그럼 useEffect 안의 함수를 실행시키고 재렌더링을 해서 html을 읽고 싶으면 
    setTimeOut이나 eventListener 같은 함수를 써야 되는건가요?
    #74302

    codingapple
    키 마스터
    그럼될거같은데 꼭 useEffect 실행 후에 html을 읽을 필요는 없을수도요
    #74311

    성훈
    참가자
    지금 게시판을 만들고 있는데 useEffect 안에 정보요청하는 함수를 만들어서  state 안에 담고 다시 setTimeout 함수를 써서 html을
    읽게하는 방식으로 코드를 짯는데 비효율적인 방식인가요?
    지금 저의 방식으로 가져온 데이터를 보여주려면 데이터를 저장하고 다시 html을 읽어야 정보를 보여줄 수 있다고 생각했습니다!
    (보통 api 호출하는 함수는 시간이 오래 걸려서 useEffect 안에 넣는다고 알고 있습니다!)
     let category_path = localStorage.getItem('pathBoardTitle')
        let [data, setData] = useState([]);
        useEffect(() => {
            console.log(category_path)
            axios.get(`/api/v1/posts/${category_path}`, {
                headers: {Authorization : props.cookies.token}
              })
              .then((res)=>{
                setTimeout(()=>{setData(res.data)}, 100);
              })
              .catch((res) => {
                console.log(res)
              })
        },[])
    #74341

    codingapple
    키 마스터
    setTimeout은 필요없어보입니다
    #74575

    성훈
    참가자
    아 useEffect 내의 함수가 실행되고 setTimeout 같은 함수를 안써줘도 알아서 html이 실행되는거같네요.
    감사합니다!
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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