React native 如何从另一个组件控制本机动画?
我有一个这样的建筑。React native 如何从另一个组件控制本机动画?,react-native,react-animated,React Native,React Animated,我有一个这样的建筑。 目标是通过Child1在屏幕内外设置Child2动画 const[value]=useState(新的Animate.value(0)) Child1 Animated.time(props.value,{toValue:100,duration:300}) Child2 。。。 对于要发生的动画,我们无法更新状态,因为这将导致重新渲染,对吗 尝试在Child1中设置值的动画,但没有任何效果。这个建筑可能吗?如何从Child1控制Child2 您可以将回调作为属性传递
目标是通过
Child1
在屏幕内外设置Child2
动画
const[value]=useState(新的Animate.value(0))
Child1
Animated.time(props.value,{toValue:100,duration:300})
Child2
。。。
值的动画,但没有任何效果。这个建筑可能吗?如何从Child1控制Child2
您可以将回调作为属性传递给您的孩子并从那里调用它。大概是这样的:
...
someCallback () {
this.setState({//SET SOMETHING})
}
<Parent>
<Child1 value={value} animationCallback={this.someCallback}>
...
</Parent>
。。。
someCallback(){
this.setState({//SET SOMETHING})
}
...
在您的孩子体内,您可以使用
this.props.animationCallback()
调用它。首先,您需要使用Animated
而不是Animate
,即Animated.View
和Animated.timeing
您应该将动画.计时功能放入父组件中。将函数向下传递(作为道具)给要触发它的子级。然后将动画值向下传递给显示动画本身的子对象
通过这种方式,您可以使动画由Child2
中的某个内容触发,但动画本身发生在Child1
中。我犯了一些错误。
1.调用Aminate.timing
而不调用.start()
2.试图将Animate.Value
传递给似乎不受支持的已设置样式的组件
在使用带有内联样式的Animate.View
之后,我实际上能够调用Child1来触发Child2中的动画
Animated.time(props.value,{toValue:100,duration:300}).start()
感谢您的关注。实际上我用了动画
。这将解决这个问题。传递函数道具也很好。很公平,然后将这个问题标记为“已回答”。