首页 > 解决方案 > 从反应自定义钩子返回 3 个数组

问题描述

我编写了一个自定义钩子,它接受一个数组并将其分成 3 个不同的数组。我不明白要取回主要组件中的 3 个数组。

我调用钩子的主要组件:

 const [divide] = useDivideCat();
if(products) { 
  divide(products)
}

我的“useDivideCat”组件:


import { useSelector } from "react-redux"
import  _, { divide } from 'lodash'
import { useMemo, useState , useCallback, memo } from "react"


 const useDivideCat = () => { 
 
  const [main, setMain] = useState([]);
  const [first , setFirst] = useState(['']);
  const [ last, setLast] = useState(['']);
const mainDish=[]
const firstDish=[]
const deseret=[]

const divide = (products) =>  { 
for (var i=0;i<products.length;i++){
 const product = _.get(products, `${[i]}.catagory`);
  if (product=="mainDish") {

    mainDish.push(products[i]);
  }
  else if(product=="firstDish")
   {
    firstDish.push(products[i]);
  }
  else if(product==='deseret')
  {
    deseret.push(products[i]);
 }

  else {
    console.log(products[i].catagory)
  }
}

return mainDish , deseret , firstDish

}
return [divide]

}
export default useDivideCat

我愿意听取有关完成工作的不同方式的意见,谢谢。

标签: javascriptarraysreactjsreact-hooks

解决方案


您需要返回一个数组或对象divide

return { mainDish, deseret, firstDish };

你可以得到 3 个这样的新数组:

if(products) { 
  const { mainDish, deseret, firstDish } = divide(products)
}

推荐阅读