react-native 滑动手势不适用于 android?
react-native swipeable gesture not working on android?
我正在与 Mosh (https://codewithmosh.com/) 一起学习 React Native 课程。我正在使用世博会。我对本机反应还很陌生,真的不知道自己在做什么,但我知道我的代码应该可以工作。我根据他的代码仔细检查了我的代码,甚至将我的项目复制给朋友 mac 并查看代码是否适用于 ios(因为 mosh 是 运行 他的代码在 ios 模拟器上)。在 ios 模拟器上,我的代码运行完美,但在 android 上,没有任何反应。
这是我实现可滑动本身的地方:
import React from 'react';
import { StyleSheet, View, Image, TouchableHighlight } from 'react-native';
import Swipeable from 'react-native-gesture-handler/Swipeable';
import AppText from './AppText';
import colors from '../config/colors';
function ListItem({title, subtitle, image, onPress, renderRightActions}) {
return (
<Swipeable renderRightActions={renderRightActions} >
<TouchableHighlight underlayColor={colors.light} onPress={onPress} >
<View style={styles.container} >
<Image style={styles.image} source={image} />
<View>
<AppText style={styles.title} >{title}</AppText>
<AppText style={styles.subTitle}>{subtitle}</AppText>
</View>
</View>
</TouchableHighlight>
</Swipeable>
);
}
然后我将其导出到另一个屏幕:
function MessagesScreen(props) {
return (
<Screen>
<FlatList
data={messages}
keyExtractor={message => message.id.toString}
renderItem={({ item }) => (
<ListItem
title={item.title}
subtitle={item.description}
image={item.image}
onPress={() => console.log('message selected', item)}
renderRightActions={ListItemDeleteAction}
/>
)}
ItemSeparatorComponent={ListItemSeparator}
/>
</Screen>
);
}
我传递给 renderRightActions 道具的 listItemDelete 动作可以在这里看到:
function ListItemDeleteAction(props) {
return (
<View style={styles.container} ></View>
);
}
好吧,我找到了一个解决方案,方法是将 swipeable 包装在 gestureHandlerRootView 中。
import { GestureHandlerRootView, Swipeable } from "react-native-gesture-handler";
import AppText from "./AppText";
import colors from "../config/colors";
function ListItem({ title, subtitle, image, onPress, renderRightActions }) {
return (
<GestureHandlerRootView>
<Swipeable renderRightActions={renderRightActions}>
<TouchableHighlight underlayColor={colors.light} onPress={onPress}>
<View style={styles.container}>
<Image style={styles.image} source={image} />
<View>
<AppText style={styles.title}>{title}</AppText>
<AppText style={styles.subTitle}>{subtitle}</AppText>
</View>
</View>
</TouchableHighlight>
</Swipeable>
</GestureHandlerRootView>
);
}
我找到了一个解决方案,将 swipeable 包装在 gestureHandlerRootView 中。
import { GestureHandlerRootView } from "react-native-gesture-handler";
import AppText from "./AppText";
import colors from "../config/colors";
function ListItem({ title, subtitle, image, renderRightActions }) {
return (
<GestureHandlerRootView>
<Swipeable renderRightActions={renderRightActions}>
<View style={styles.main}>
<Image style={styles.img} source={image} />
</View>
</Swipeable>
</GestureHandlerRootView>
);
}
我正在与 Mosh (https://codewithmosh.com/) 一起学习 React Native 课程。我正在使用世博会。我对本机反应还很陌生,真的不知道自己在做什么,但我知道我的代码应该可以工作。我根据他的代码仔细检查了我的代码,甚至将我的项目复制给朋友 mac 并查看代码是否适用于 ios(因为 mosh 是 运行 他的代码在 ios 模拟器上)。在 ios 模拟器上,我的代码运行完美,但在 android 上,没有任何反应。
这是我实现可滑动本身的地方:
import React from 'react';
import { StyleSheet, View, Image, TouchableHighlight } from 'react-native';
import Swipeable from 'react-native-gesture-handler/Swipeable';
import AppText from './AppText';
import colors from '../config/colors';
function ListItem({title, subtitle, image, onPress, renderRightActions}) {
return (
<Swipeable renderRightActions={renderRightActions} >
<TouchableHighlight underlayColor={colors.light} onPress={onPress} >
<View style={styles.container} >
<Image style={styles.image} source={image} />
<View>
<AppText style={styles.title} >{title}</AppText>
<AppText style={styles.subTitle}>{subtitle}</AppText>
</View>
</View>
</TouchableHighlight>
</Swipeable>
);
}
然后我将其导出到另一个屏幕:
function MessagesScreen(props) {
return (
<Screen>
<FlatList
data={messages}
keyExtractor={message => message.id.toString}
renderItem={({ item }) => (
<ListItem
title={item.title}
subtitle={item.description}
image={item.image}
onPress={() => console.log('message selected', item)}
renderRightActions={ListItemDeleteAction}
/>
)}
ItemSeparatorComponent={ListItemSeparator}
/>
</Screen>
);
}
我传递给 renderRightActions 道具的 listItemDelete 动作可以在这里看到:
function ListItemDeleteAction(props) {
return (
<View style={styles.container} ></View>
);
}
好吧,我找到了一个解决方案,方法是将 swipeable 包装在 gestureHandlerRootView 中。
import { GestureHandlerRootView, Swipeable } from "react-native-gesture-handler";
import AppText from "./AppText";
import colors from "../config/colors";
function ListItem({ title, subtitle, image, onPress, renderRightActions }) {
return (
<GestureHandlerRootView>
<Swipeable renderRightActions={renderRightActions}>
<TouchableHighlight underlayColor={colors.light} onPress={onPress}>
<View style={styles.container}>
<Image style={styles.image} source={image} />
<View>
<AppText style={styles.title}>{title}</AppText>
<AppText style={styles.subTitle}>{subtitle}</AppText>
</View>
</View>
</TouchableHighlight>
</Swipeable>
</GestureHandlerRootView>
);
}
我找到了一个解决方案,将 swipeable 包装在 gestureHandlerRootView 中。
import { GestureHandlerRootView } from "react-native-gesture-handler";
import AppText from "./AppText";
import colors from "../config/colors";
function ListItem({ title, subtitle, image, renderRightActions }) {
return (
<GestureHandlerRootView>
<Swipeable renderRightActions={renderRightActions}>
<View style={styles.main}>
<Image style={styles.img} source={image} />
</View>
</Swipeable>
</GestureHandlerRootView>
);
}