7.springBoot/1)개념_springBoot

springBoot_개념_Day_19

구이제이 2024. 5. 2. 17:55

ㅡㅡㅡ

 

#



●1

 

#

 

#




 

#page는 ”URL을 처리”할려고 만들었습니다.



#

컴포넌트 폴더안에서 “실제적인 작업”을 처리할려고 합니다.



#

 

#






●2

140번 2번실행



#호출되는 원리





 







#결과 : http://localhost:3000/todo/read/140 이것을 치면, 중복코드에 대한 부분을 작성해주어야합니다.

 




#리엑트 라우터 돔




커스텀훅 : 네비게이션 

유즈서치 파람스 = 리엑트라우터돔안에 들어가는 훅입니다.

그런 훅들을 처리하려합니다.



네비게이션 : 이동

유즈서치파람스 훅 : 

커스텀훅 : 시작을 use

 









Modify 변경

커스텀훅으로 만들어놧습니다.

 

그래서 수정 삭제 읽기 공통적으로 만들어놧습니다. use훅으로 사용자정의 훅으로 만들어놨습니다.



#

 

import { useState } from "react"

import { createSearchParams, useNavigate, useSearchParams } from "react-router-dom"

 

 

 

 

 

const getNum  = (param, defaultValue) => {

 

  if(!param){

    return defaultValue

  }

 

  return parseInt(param)

}

 

 

 

 

 

 

const useCustomMove = () => {

 

  const navigate = useNavigate()

 

  const [refresh, setRefresh] = useState(false)  

 

  const [queryParams] = useSearchParams()

 

  const page = getNum(queryParams.get('page'), 1)

  const size = getNum(queryParams.get('size'),10)

 

  const queryDefault = createSearchParams({page, size}).toString()

 

 

 

 

 

 

  const moveToList = (pageParam) => {

 

    let queryStr = ""

 

    if(pageParam){

 

      const pageNum = getNum(pageParam.page, 1)

      const sizeNum = getNum(pageParam.size, 10)

 

      queryStr = createSearchParams({page:pageNum, size: sizeNum}).toString()

    }else {

      queryStr = queryDefault

    }

 

    navigate({

      pathname: `../list`,

      search:queryStr

    })

 

    setRefresh(!refresh) //추가

  }

 

 

 

 

 

  const moveToModify = (num) => {

 

    console.log(queryDefault)

 

    navigate({

      pathname: `../modify/${num}`,

      search: queryDefault  

    })

  }

 

 

 

 

 

 

  const moveToRead =(num) => {

 

    console.log(queryDefault)

 

    navigate({

      pathname: `../read/${num}`,

      search: queryDefault

    })

  }

 

 

 

 

 

  return  {moveToList, moveToModify, moveToRead, page, size, refresh}

 

 

 

}

 

export default useCustomMove