동적 필터링을 사용하여 이 React 코드를 어떻게 더 최적화할 수 있습니까?
9268 단어 performancewebdevtypescriptreact
그래서 다음과 같이 목표를 설정했습니다.
커스텀 훅
그리고 나는 minimal, workable example을 생각해 냈고 여기 working demo이 있습니다.
최적화를 달성하는 데 절반만 성공했습니다.
내가 한 방법은 다음과 같습니다.
const [page,setPage] = useState(1)//current page filter
const [resultLimit,setResultLimit] = useState(10) //result limit filter,currently not implemented
const [totalCount,setTotalCount] = useState(0) // total result count filter
const [filters,setFilters] =useState<IFilterBugData>({
platform:[],
rootCause: [],
reportedBy: [],
assignedTo: [],
status: [],
defectCategory: [],
severity: [],
priority: [],
})//filter options
const [bugsData,setBugsData] = useState<IBug[]>([]) //bugs result
const handleFilterDispatch = (state:IKeyValue[],payload:IFilterPayload) => {
let _temp = [...state]
switch(payload.action){
case 'add':
return _temp
case 'reset':
return []
default:
return _temp
}
}// use reducer for handling function temp filter state
// const filterState = useRef<IKeyValue[]>([])
const [filterState,filterDispatch] = useReducer(handleFilterDispatch,[])//temp filter state
const [finalFilterState,setFinalFiterState] = useState<IKeyValue[]>([])//input filter state
const memoizedInput:IInputBugData = useMemo(() => {
return {
filters:finalFilterState,
page,
resultLimit
}
},[finalFilterState,page,resultLimit])
const getBugsData = useCallback(() => {
console.log('inside memoized callback',memoizedInput)
return getBugs(memoizedInput)
}, [memoizedInput])
useEffect에서 memoized 함수
getBugsData
호출 useEffect(() => {
console.log('rendering dataaaaaa')
let {resultCount,currentPage,bugs,filters} = getBugsData()
setBugsData(bugs)
setFilters({...filters})
setPage(currentPage)
setTotalCount(resultCount)
},[getBugsData])
하지만 실패한 것은
제 질문은 여러분이 어떻게 다르게 하시겠습니까입니다.
참고: 사용자 정의 후크를 수행하고 있는지 또는 올바른 방법으로 useReducer/useCallback/useMemo를 수행하고 있는지 확실하지 않기 때문에 여러분은 내가 수행한 안티 패턴을 지적할 수도 있습니다.
Reference
이 문제에 관하여(동적 필터링을 사용하여 이 React 코드를 어떻게 더 최적화할 수 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anoopfranc/how-would-you-make-his-react-code-with-dynamic-filtering-more-optimized-3m1m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)