组件和挂钩:
// FulfillmentOrders.js
export default function FulfillmentOrders (props) {
const { list, fetchList } = useFetchSOList(1)
return (...)
}
// useFetchSOList.js
export default status => {
const initialSearch = {
status,
current: 1,
pageSize: 10,
total: 0,
}
const [list, setList] = useState()
const fetchList = useCallback((search = {}) => {
const defaultSearch = search.reset ? initialSearch : search
const {
current,
pageSize,
status,
} = defaultSearch
axios.post().then().catch().finally()
}, [initialSearch]}
}
然后,抓取将循环无限,我尝试从status
中删除initialSearch
属性,它仍然在循环。
我想知道为什么,这让我感到困惑。
答案 0 :(得分:0)
问了这个问题之后,我发现我知道这个问题的关键,因为当前的initialSearch
总是与pre value不同,所以请使用useMemo
来缓存值。
const getInitialSearch = status => ({
status,
current: 1,
pageSize: 10,
total: 0,
})
// useFetchSOList.js
export default status => {
const initialSearch = useMemo(() => getInitialSearch(status), [status])
const [list, setList] = useState()
const fetchList = useCallback((search = {}) => {
const defaultSearch = search.reset ? initialSearch : search
const {
current,
pageSize,
status,
} = defaultSearch
axios.post().then().catch().finally()
}, [initialSearch]}
}