react-native cómo agregar una imagen y presionar en táctil

2 minutos de lectura

Avatar de usuario de Mr.moayed
Sr. moayed

Tengo touchable en reaccionar nativo, dentro de touchable tengo imagen y en prensa como esta

 <TouchableHighlight >
  <Image style={styles.imagestyle}
  source={require('./ic_action_name.png')} />
  onPress={() => this.moveToAddNewCustomer()}>
 </TouchableHighlight>

Cuando traté de ejecutar la aplicación, recibí este error

Se espera que React.Childeren.only reciba un solo elemento React child

¿Cómo arreglar esto?

Avatar de usuario de Venkatesh Somu
Venkatesh Somu

Tienes que hacerlo así:

<TouchableHighlight onPress={() => this.moveToAddNewCustomer()}>
    <Image style={styles.imagestyle} source={require('./ic_action_name.png')} />
</TouchableHighlight>

o

<TouchableOpacity onPress={()=>this.moveToAddNewCustomer()}>
    <Image style={styles.imagestyle} source={require('./ic_action_name.png')} />
</TouchableOpacity>

  • Esta solución no funciona en iOS. Estoy usando 0.63. ¿Cual podría ser el problema?

    – Piensa y codifica

    27 de julio de 2021 a las 15:25

  • @ Mighty, te sugiero que uses react-native-material-ripple o TouchableWithoutFeedback.

    – burro

    2 de marzo de 2022 a las 6:54

De forma predeterminada, no hay clics ni eventos adjuntos con ninguna de las vistas en React Native como React.js. Hay principalmente dos vistas diseñadas específicamente para manejar eventos táctiles. Ellos son TouchableOpacity y TouchableHighlight. Puede resolver su problema envolviendo su Image componente con TouchableOpacity o TouchableHighlight.

<TouchableHighlight onPress={() => this.moveToAddNewCustomer()}>
    <Image style={styles.imagestyle} source={require('./ic_action_name.png')} />
</TouchableHighlight>

https://reactnative.dev/docs/touchablehighlight

https://reactnative.dev/docs/touchableopacity

si

TouchableHighlight onPress={() => this.moveToAddNewCustomer()}>
    <Image style={styles.imagestyle} source={require('./ic_action_name.png')} />
</TouchableHighlight>

no funcionó, deberías poner tu imagen en un <view>

Avatar de usuario de Narayan Shrestha
Narayan Shrestha

Resolví mi problema usando “TouchableWithoutFeedback”

<TouchableWithoutFeedback
    onPress={() => {
       this.moveToAddNewCustomer()}
    }}
>
    <Image
      style={styles.newImage}
      // resizeMode="contain"
      source={require("~/assets/images/test123.png")}
    />
</TouchableWithoutFeedback>

Avatar de usuario de Noob tv
televisión novata

si

TouchableHighlight onPress={() => this.moveToAddNewCustomer()}>
<Image style={styles.imagestyle} source={require('./ic_action_name.png')} />
</TouchableHighlight>

no funcionó o incluso envolvió la imagen con la vista, entonces le recomiendo que busque en su

style={styles.imagestyle}

tratar de usar zIndex: 10
existe una pequeña posibilidad de que su imagen haya sido superpuesta por algo, pero no pierde la imagen.

  • Como está escrito actualmente, su respuesta no está clara. Edite para agregar detalles adicionales que ayudarán a otros a comprender cómo esto aborda la pregunta formulada. Puede encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.

    – Comunidad
    Bot

    1 de marzo a las 12:34

  • Como está escrito actualmente, su respuesta no está clara. Edite para agregar detalles adicionales que ayudarán a otros a comprender cómo esto aborda la pregunta formulada. Puede encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.

    – Comunidad
    Bot

    1 de marzo a las 12:34

¿Ha sido útil esta solución?