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

home2 게시판 React 게시판 input 변경시 재렌더링

input 변경시 재렌더링

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #58499

    박가인
    참가자
    강의를 듣고 혼자 프로젝트하다가 막혀서 질문드립니다.
    
    문제가 되는 부분은 저기에 Editor 컴포넌트(이 컴포넌트는 코드가 길어서 올린지는 못했으나 
    
    const Editor = memo((props) => { 생략} 이렇게 memo를 써서 렌더링 한번만 되도록 하였습니다.)
    
     Editor 컴포넌트는 참고로 react-quill 에디터 컴포넌트로 글을 작성하는 컴포넌트입니다.
    
    여기에다(input입력) 글을 쓰면 렌더링이 되어서 커서가 그대로 있는 게 아니라 맨 앞으로 이동해버려서
    
    useEffect return 에다가 함수 넣고 배열은 [] 이렇게 하면 unmount될 때 한 번만 실행한다는 생각으로 아래와 같이 적었습니다.
    
    
    function WritePage() {
      const [title, setTitle] = useState("");
      const [content, setContent] = useState("");
      useEffect(() => {
        return () => {
          handleContent;
        };
      }, []);
      console.log("render");
    
    function handleContent(value) {
        console.log(value);
        setContent(value);
      }
      return (
        <div >
          <div >
            <input
              className="title_input"
              placeholder=" 제목을 입력하세요"
              value={title}
              onChange={(e) => {
                setTitle(e.target.value);
              }}
            />
            <Editor value={content} onChange={handleContent} />
    하지만 똑같이 글자를 입력하면 이 WritePage가 다시 렌더링되어 버리는 이슈가 남아있어서
    
    렌더링을 막을 수 있는 방법을 여쭈어보고자 글을 남깁니다.
    
     + useState대신에 useRef를 적는게 좋을까요??? useRef 쓰려고 시도는 해보았으나 useState의 setter함수를 어떻게 대체해야할지 
    조금 어려워서 못했습니다. ㅠㅠ
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    		
    	
    #58518

    codingapple
    키 마스터
    value={} 를 지워봅시다
    #58522

    박가인
    참가자
    앗 제가 전체코드를 올려야하는데 이렇게 질문하면 답하시기 어려우실 것같긴한데 혹시 어디에 있는 value 말씀하시는 건지 알수 있을까요??? ㅠㅠ value={content}는 아니구 다른 value를 못찾겠어요 ㅎㅎ
    #58537

    박가인
    참가자
    useRef 쓰니까 되네요 ㅎㅎ 해결했습니다~! ㅎㅎ
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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