Estoy haciendo un curso nativo de reacción con Mosh ( https://codewithmosh.com/ ). Estoy usando expo. Soy muy nuevo en reaccionar nativo y realmente no sé lo que estoy haciendo, pero sé que mi código debería funcionar. Comprobé dos veces mi código con el suyo e incluso llegué a copiar mi proyecto en la Mac de un amigo y ver si el código funciona en ios (ya que mosh está ejecutando su código en el simulador de ios). En el simulador de iOS, mi código funciona perfectamente, pero en Android no pasa nada.
Aquí es donde implemento el propio deslizable:
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> ); }Luego exporto esto a una pantalla diferente:
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> ); }la acción listItemDelete que estoy pasando a la propiedad renderRightActions se puede ver aquí:
function ListItemDeleteAction(props) { return ( <View style={styles.container} ></View> ); }Muy bien, encontré una solución al envolver el deslizable en un gestoHandlerRootView.
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> ); }Encontré una solución al envolver el deslizable en un gestoHandlerRootView.
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> ); }