reactjs - 每个屏幕的 React-Native 自定义事务动画
问题描述
对于示例 A->B 不同的 B->C,我想要每个屏幕的自定义事务动画。
我发现:https ://stackoverflow.com/questions/43974979/react-native-react-navigation-transitions
但我不知道如何使用它: this.props.navigation.navigate('SearchVideo',{keywork:keywork})
任何人都可以帮助我吗?
解决方案
如果您使用react-navigation
,则可以使用transitionConfig
of 来自定义屏幕转换StackNavigator
。原始来源在这里。但是它无法知道上一屏,所以只能根据当前屏的信息进行自定义。
转换到 B 的示例是 left => right,转换到 C 是 top=>bottom:
const myNavigator = StackNavigator(
{
A: { screen: A },
B: { screen: B },
C: { screen: C }
},
transitionConfig: () => ({
screenInterpolator: screenProps => {
const { layout, position, scene } = sceneProps
const { index, route: { routeName } } = scene
const width = layout.initWidth
const height = layout.initHeight
let translateX = 0
let translateY = 0
const opacity = position.interpolate({
inputRange: [index - 1, index - 0.99, index],
outputRange: [0, 1, 1],
})
switch (routeName) {
case 'B':
translateX = position.interpolate({
inputRange: [index - 1, index, index + 1],
outputRange: [-width, 0, 0],
})
break;
case 'C':
default:
translateY = position.interpolate({
inputRange: [index - 1, index, index + 1],
outputRange: [-height, 0, 0],
})
}
return {
opacity, transform: [
{ translateX },
{ translateY }
]
}
}
})
)
推荐阅读
- python - Python 和 SQLite 存储变量
- r - 在R中按类型返回列的平均值
- swift - 在 SwiftUI 中从 url 异步加载多个图像
- html - 为什么悬停在包含另一个 div 的 div 上不起作用?
- python - Python 分析 - 识别内置散列函数用法
- javascript - discord.js 欢迎消息每次重启只选择一条随机消息
- node.js - Sequelize Migrate 不识别 Dotenv
- spring-boot - 如何使用下划线变量解决 Spring Boot findBy 方法
- pandas - 与 Pandas 结果相比,数据框中的 Pyspark 唯一值数量不同
- html - 隐藏 Flexbox 溢出