Custome用获取循环来响应钩子,因为钩子从组件中获取参数

时间:2019-11-22 12:46:18

标签: reactjs react-hooks

组件和挂钩:

// 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属性,它仍然在循环。
我想知道为什么,这让我感到困惑。

1 个答案:

答案 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]}
}