在 UseState react Hook 中使用 prevState 回调函数
Using prevState Callback function in UseState react Hook
我在 filteredProducts
变量中有一些产品数组,想根据价格和新添加的产品对它们进行排序。
当像这样使用 prevState 而回调函数中没有 { }
时,代码运行正常。
useEffect(() => {
if(sort === "newest") {
setFilteredProducts((prevState) =>
[...prevState].sort((a, b) => a.createdAt - b.createdAt)
);
}
else if (sort === "asc") {
setFilteredProducts((prevState) =>
[...prevState].sort((a ,b) => a.price - b.price)
);
}
else {
setFilteredProducts((prevState) =>
[...prevState].sort((a, b) => b.price - a.price)
);
}
}, [sort]);
但是当像这样使用{ }
作为prevState回调函数时
if(sort === "newest") {
setFilteredProducts((prevState) => {
[...prevState].sort((a, b) => a.createdAt - b.createdAt)
});
}
,它只是在控制台中抛出错误。
当你使用括号声明一个函数体时,需要return一个值,即下一个状态。没有函数体的箭头函数使用隐式(vs 显式)return.
setFilteredProducts((prevState) => {
return [...prevState].sort((a, b) => a.createdAt - b.createdAt);
});
我在 filteredProducts
变量中有一些产品数组,想根据价格和新添加的产品对它们进行排序。
当像这样使用 prevState 而回调函数中没有 { }
时,代码运行正常。
useEffect(() => {
if(sort === "newest") {
setFilteredProducts((prevState) =>
[...prevState].sort((a, b) => a.createdAt - b.createdAt)
);
}
else if (sort === "asc") {
setFilteredProducts((prevState) =>
[...prevState].sort((a ,b) => a.price - b.price)
);
}
else {
setFilteredProducts((prevState) =>
[...prevState].sort((a, b) => b.price - a.price)
);
}
}, [sort]);
但是当像这样使用{ }
作为prevState回调函数时
if(sort === "newest") {
setFilteredProducts((prevState) => {
[...prevState].sort((a, b) => a.createdAt - b.createdAt)
});
}
,它只是在控制台中抛出错误。
当你使用括号声明一个函数体时,需要return一个值,即下一个状态。没有函数体的箭头函数使用隐式(vs 显式)return.
setFilteredProducts((prevState) => {
return [...prevState].sort((a, b) => a.createdAt - b.createdAt);
});