reactjs - 只有当它们的依赖项是状态的一部分时,memoized 回调才会改变?
问题描述
我得到了一个 React memoized 回调,它使用来自 redux 存储的值:
const filterValue = useSelector(state => state.filterValue);
const filter = useCallback(
item =>
includes(item.name.toLowerCase(), filterValue.toLowerCase()) ||
includes(item.description.toLowerCase(), filterValue.toLowerCase()),
[filterValue]);
我的问题是,memoized 回调是否实际上仅在filterValue
更改时才会重新呈现,或者我是否必须将 filterValue 设置为组件状态而不是从 redux 存储(意思是const [filterValue, setFilterValue] = useState('');
)才能检测到依赖关系的变化?
解决方案
filterValue
是的,只有在更改时才会重新渲染。
如果您想知道为什么,您可以查看useSelector
实现高峰并查看useReduxContext
Context API 调用。
这意味着filterValue
被选择的状态useSelector
是组件状态的一部分,就像您使用时一样,因此它是 的依赖数组的useState
合法值。useEffect
推荐阅读
- php - PHP一直插入数据但一旦失败并插入重复?
- python - 如何在树莓派上使用 crontab 运行代码
- javascript - 表单中的 Ajax 自定义内联消息
- react-native - 如何水平包装 ScrollView 内容?
- amazon-web-services - AWS CloudFront 在转发 cookie 后返回 404
- schema.org - 产品的结构化数据可以拆分成不同的部分吗?
- pip - 如何使用需求文件以可编辑模式从本地目录安装相互依赖的包
- javascript - DatePicker 和 Calendar 显示格式 Year+543 为泰国年(佛教年)
- compiler-errors - 无法在 Windows 上编译 Rust hello world:未找到链接器 link.exe
- python - split() 和 replace(' ','') 有什么区别?