请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于setParams和useEffect的问题

老师在课程中为了改变header的透明度,您在componentdidmount中加入了navigation.setParams({
opacity: translateY.interpolate({
inputRange: RANGE,
outputRange: [1, 0],
}),
});
用来实现向上拖动header渐变呈现的效果。
如果是用的useEffect应该怎么写,如果在第二个参数中设置空数组,那么起不到任何效果,如果第二个数组中设置了dependency,那程序就会不断rerender从而死机。
我的代码如下,请教如何修改:
useEffect(() => {
dispatch({
type: ‘album/fetchAlbum’,
payload: {id},
});
}, [dispatch, id]);

useEffect(() => {
navigation.setParams({
opacity: translateY.interpolate({
inputRange: RANGE,
outputRange: [1, 0],
}),
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);

正在回答 回答被采纳积分+3

2回答

提问者 weixin_慕标1013808 2020-06-05 17:24:34

老师,我的代码在这里:https://github.com/AllenZhang-yz/xymalaya

按照目前的情况,setparam的opacity未生效,麻烦帮看看,困扰我好久了

0 回复 有任何疑惑可以回复我~
  • 今朝 #1
    创建动画值的时候,需要使用useRef,不然每更新一次获取到的动画值都不是同一个
    
    const translationYz = useRef(new Animated.Value(0)).current;
      const lastScrollY = useRef(new Animated.Value(0)).current;
      let lastScrollYValue = useRef(0).current;
      const reverseLastScrollY = Animated.multiply(
        new Animated.Value(-1),
        lastScrollY,
      );
      let translationYValue = useRef(0).current;
      const translationYOffset = useRef(new Animated.Value(0)).current;
    回复 有任何疑惑可以回复我~ 2020-06-05 22:48:47
  • 提问者 weixin_慕标1013808 回复 今朝 #2
    太感谢老师了
    回复 有任何疑惑可以回复我~ 2020-06-06 08:02:32
  • 尚橙 回复 今朝 #3
    老师您好,还想请教一下您是怎么定位这个问题的呢?
    回复 有任何疑惑可以回复我~ 2021-08-19 17:36:07
今朝 2020-06-02 09:22:52

可以看一下你整个的代码吗

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信