首页 > 解决方案 > 复活的 SharedValue 更改时调用 React Native 代码

问题描述

我有一个reanimated ReadOnly<SharedValue<boolean>>从另一个派生的SharedValue

  const solidHeader = useDerivedValue(() => {
    return top.value <= -(height / 2);
  });

我想在solidHeader.value更改时调用一个 RN 函数(未恢复)。具体来说,我想更新我react-navigation的标题透明度:

// This doesn't get called when `solidHeader.value` is updated in reanimated's thread
useEffect(() => {
  navigation.setOptions({headerTransparent: !solidHeader.value});
}, [solidHeader.value]);

我尝试了以下“似乎”是正确的方法,但后来我得到了错误

Reanimated: Animated.call node args should be an array with elements of type AnimatedNode. One or more of them are not AnimatedNodes
    useCode(() => {
      return call([solidHeader], (solidHeader) => {
        console.warn(solidHeader);
        navigation.setOptions({
          headerTransparent: !solidHeader,
        });
      });
    }, [solidHeader]);

我正在实现的目标是可能的吗?

标签: react-nativereact-native-reanimatedreact-native-reanimated-v2

解决方案


我认为 useCode 用于 reanimated 1,而 useSharedValue 用于 reanimated 2。请按照文档:尝试 useAnimatedReaction


推荐阅读