【发布时间】:2020-03-24 13:52:43
【问题描述】:
如何使用useState 挂钩更新依赖于数组索引的对象数组中的数组?
最终目标数据:
foodData = [
{
foodId: 'fdsafsdafsa',
fruitsArray: ['banana', 'orange']
},
{
foodId: '234243fdsfdsafsasdf343432afsdafsa',
fruitsArray: ['apple']
},
{
foodId: 'fdsafsdafsa',
fruitsArray: ['strawberry', 'orange']
},
]
我有一个带参数的函数,(fruits, fruitIndex, foodIndex, foodId)
const logFruitsIntoFoodData = (fruits, fruitIndex, foodIndex, foodId) => {
// update state here...
const foodToUpdate = {...foodData};
foodToUpdate[foodIndex] = {
...foodData[foodIndex],
// This gets overwritten,
// how do I continue to add or
// update the fruit based on fruit index?
['fruitsArray']: fruits,
};
}
我正在尝试将水果更新/添加到 fruitsArray 中,因此当调用该函数时,它会将正确的水果插入 foodData,或者它会更新它,取决于 fruitIndex 是什么。
我应该使用两个单独的useState:
const [foodData, setFoodData]= useState([]);
const [fruitsArray, setFruitsArray] = useState([]);
我应该先在哪里获取水果数组,然后将其添加到 foodData,或者我可以只使用 1 个 useState 来处理所有事情吗?
【问题讨论】:
-
所以在那个函数中,你想从你的数组中找到相关的
foodId/foodIndex(在我看来你可以使用任何一个)然后修改@中指定的fruitsArray索引987654330@?您是否要将指定的fruits添加到现有的?fruits是多个水果的数组吗?如果是这样,那么您是从fruitIndex开始添加/替换它们,还是有什么意图? -
@James 在函数中,我试图使用
fruits(这是一个单值参数)插入(或更新)到fruitsArray。我在想fruitIndex可以帮助找出数组中的哪个索引来更新水果(让我们假设每个水果进入数组的特定顺序。foodIndex的目的应该用于确保fruits的值将变为正确的foodId。我希望这更有意义?
标签: arrays reactjs react-native react-hooks