【发布时间】:2021-12-23 11:54:48
【问题描述】:
我正在编写我的第一个钩子,我也使用 redux。 我在 React native 中监听来自移动设备的方向传感器数据,当它更新时,我过滤它以查看新值是否与旧值不同,然后再将其发送到 redux 状态进行存储。
我注意到 filterData 方法中的数据始终为空。但是,如果我在渲染中控制台记录 storedVal,我会看到它一直在更新,并且它也在 Redux 存储中更新。
但由于某种原因,filterData 只能访问初始值,而不能获取更新后的值。知道如何解决这个问题吗?
const storedVal = useSelector(selectors.selectStoredVal);
const filterData = useCallback(
() => {
console.log(storedVal);
},
[storedVal]
);
useEffect(
() => {
orientation.pipe(filter(filterData)).subscribe((data) => {
console.log('Data filtered correctly, new data received here');
}
}
),
[];
}
【问题讨论】:
-
filter()函数有什么作用?它是在调用 filterData (它本身就是一个函数)吗?您的回调函数不返回任何内容,不是吗?如果您不使用useCallback,您的代码是否有效?请记住,这是一种优化技术,它实际上不应该改变代码的功能。 -
你的 useEffect 在 filterData...
-
尝试添加
filterData函数作为useEffect的依赖,比如useEffect(() => {...}, [filterData])
标签: javascript react-native redux react-hooks