reactjs - 项目数组的 useCallback 依赖项
问题描述
我有一张卡片清单。当我通过按下按钮将它们添加到收藏夹时,它会更改该按钮的颜色。但是,我只想在添加到收藏夹后重新渲染该特定卡片。
const addFavouriteHandler = useCallback((id: number) => {
dispatch(addFav(id));
}, [ ?? ])
// This is my card in the list
<MovieCard
key={movie.id}
movie={movie}
addFavourite={addFavouriteHandler}
removeFavourite={removeFavouriteHandler}
isFavourite={isFavourite}
/>
这里的 useCallback 依赖项是什么?
解决方案
很可能您收到有关缺少函数依赖项的警告dispatch
,因此您useCallback
将是:
const addFavouriteHandler = useCallback((id: number) => {
dispatch(addFav(id));
}, [dispatch]);
真正的问题是,在这种情况下,我认为您不需要自定义钩子,只需编写:
const addFavouriteHandler = (id: number) => {
dispatch(addFav(id));
};
然后,如果要MovieCard
在将其添加到收藏夹后进行渲染,则isFavourite
类似于:
isFavourite = arrayOfFavourites.includes(movie.id)
数组在哪里arrayOfFavourites
填充dispatch(addFav(id));
,那么您MovieCard
肯定会重新渲染,因为现在卡 ID 已打开arrayOfFavourites
。
推荐阅读
- acumatica - 向 Acumatica 提交销售订单时出错
- regex - 正则表达式匹配除字符之外的任何内容(包括空字符串)
- android - react-native-image-picker+axios 在 Android 上上传失败
- javascript - 初始化一次后如何导出变量?
- python - 我有 4 点,我想找到给定起点的最短路径
- flutter - flutter_bloc 与自写 bloc 或 MVVM 比较
- reactjs - React 不适用于备忘录和树结构
- systemd - 分析崩溃/死机系统的 systemd 日志
- android - 透明活动中的 setOnTouchListener
- excel - FileDialog(msoFileDialogFolderPicker) - 如何将初始路径设置为“root”/“This PC”?