javascript - 从反应自定义钩子返回 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
我愿意听取有关完成工作的不同方式的意见,谢谢。
解决方案
您需要返回一个数组或对象divide
:
return { mainDish, deseret, firstDish };
你可以得到 3 个这样的新数组:
if(products) {
const { mainDish, deseret, firstDish } = divide(products)
}
推荐阅读
- scala - 使用列名数组中的 UDF 将列合并到单个映射中
- java - 获取 mbeans 属性值树
- c# - 键盘打开时 UINavigationBar 被推出屏幕(UITextView)
- angular - 在 Angular 中使用 JIT 编译而不是使用 AOT 有什么好处吗?
- radgrid - How to set CommandItem to true again after printing data in radGrid Telerik UI for Asp.Net AJAX?
- java - Minecraft forge automatically sets _JAVA_OPTIONS environment variable
- kubernetes - kube-dns: resolve
success, resolve . failed - python - Lightgbm 提前停止无法正常工作
- jenkins - Jenkins Email Notification to Build-Requestor (URL-Trigger)
- ios - Building static library using Xcode 11. Get “error: Unable to find a suitable library in the XCFramework"