在React Native中获取功能组件中可变子级的高度

我正在尝试在组件中增加子项的高度,以实现动画。

这是卡组件

在React Native中获取功能组件中可变子级的高度

与儿童同住

在React Native中获取功能组件中可变子级的高度

我想获取子组件的高度,以便可以对高度值进行动画处理,以实现动画扩展。

{expanded ? (
        <>
          <Animated.View style={{height: someAnimatedHeight}}>
            <View onLayout={handleLayout}>
              {children}
            </View>
          </Animated.View>
          <PromoCodeArea />
        </>
      ) : (
        <PromoCodeArea />
      )}

handleLayout

const handleLayout = ({ nativeEvent }) => {
    setContainerHeight(nativeEvent.layout.height);
  };

但是,handleLayout不会提供高度,直到扩展卡为止。我可以使动画以硬编码的大小工作。

我希望动画灵活并扩展到孩子们的身高。

未展开时,handleLayout返回值为0,因此无法设置toValue

const startAnimation = () => {
    Animated.spring(heightAnimation,{
      toValue: 125,<-- like this to be based on the height of children
    }).start();
  };

我无法找到使用功能组件和挂钩实现此目的的示例。

dido17 回答:在React Native中获取功能组件中可变子级的高度

一种策略(虽然不漂亮,但对我有用)是将子级样式初始设置为不透明度0(所以没人能看到)并将其位置设置为“绝对”,这样就不会干扰您的可见布局,并且不要将高度设置为0,以便以所需的大小进行渲染。渲染后(考虑使用useLayoutEffect),从onLayout获取高度并将其保存-然后在任何人有机会与它进行交互之前,将样式重新设置为当前的样式。

本文链接:https://www.f2er.com/2763786.html

大家都在问