IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

React Discussion :

Utilisation condition dans un render


Sujet :

React

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut Utilisation condition dans un render
    Bonjour,

    Je cherche depuis un moment sans succès et je me troune vers vous.

    Je dois afficher une des trois image en fonction de deux variables mais je dois surtout récupérer la valeur d'une variable pour affciher une image.

    Voici mon code (peut-être que je m'y prend mal)

    Les deux variable qui nous concerne est imageHeader et imageHeaderPage

    Dasn la vue station.tsx, j'appelle le componemnt <Header> ainsi (qui va afficher les informations d'une station)

    station.tsx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Header imageHeaderStation={2}/>
    Dans la vue stations.tsx, j'affiche toutes mes stations et j'appelle Header ainsi

    stations.tsx
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    <Header imageHeader="home2.jpg"/>


    Avant il faut savoir.
    Si imageHeaderStation a une valeur (1, 2, 3,...) j'affiche l'image d'une station

    Avant d'aller dans les détail. en résumé, j'aimerais faire

    Si imageHeaderStation == true affiche une image distance ({uri: 'https://bud.eco-sensors.ch/img/stations/station-'+ imageHeaderStation +'.jpg'})
    Si non Si imageHeader == true affiche une image local (require('@/assets/images/app/'+imageHeader))
    si non affiche une image local par default (require('@/assets/images/app/header1.jpg'))

    J'appelle Header dans la page qui affiche toutes les stations ainsi
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    <Header imageHeader="home2.jpg"/>

    Et j'appelle l'image d'une station, dans la vue qui affiche les informations d'une station ainsi
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    <Header imageHeaderStation={1}/>

    Si non dans d'autres vues, je peux avoir simplement ceci qui va m'adficher une image par défaut

    Je commence comme cela et la ca bug déjà en utilise {imageHeader ? :}. C'est comme si je ne pouvais faire elseif()
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <Image
                        style={css.jumbotronImage}
                        source={imageHeaderStation ? 
                            {uri: 'https://bud.aaaaa.ch/img/stations/station-'+ imageHeaderStation +'.jpg'} :
    {imageHeader ? require('@/assets/images/app/' + imageHeader) :
                            require('@/assets/images/app/header.jpg')}
                    />



    L'autre problème se trouve ici. J'ai toujours une erreur au niveau de '+imageHeader
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    require('@/assets/images/app/'+imageHeader) :
    J'ai aussi essayé un truc du genre sans succès
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    require('@/assets/images/app/${imageHeader}) :
    J'ai déjà vu ca (${variable} )à quelque part, mais ca ne joue pas chez moi

    Comment je peux récupréer la valeur de imageHeader pour qu'au final j'ai un truc équivalent à
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    require('@/assets/images/app/header2.jpg) :

    Voici le code qui pose qui doit clairement évoluer...
    Header.tsx
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    type Props = {
        imageHeaderStation?: number | null,
        imageLogo?: number | null,
        imageHeader?: string | null,
        showLogo?: boolean,
    }
     
    export function Header({imageHeader, imageLogo, imageHeaderStation, showLogo, ...rest}: Props){
        const colors = useThemeColors();
     
        return(
            <View style={[styles, {backgroundColor: colors.appHeadBackgroundColor }]} {...rest}>
                <View style={css.jumbotronContainer}>
     
                    <Image
                        style={css.jumbotronImage}
                        source={imageHeaderStation ? 
                            {uri: 'https://bud.eco-sensors.ch/img/stations/station-'+ imageHeaderStation +'.jpg'} :
                            require('@/assets/images/app/header.jpg')}
                    />
                </View>
            </View>
        )
    }

    Merci pour vos lumières

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    J'ai aborder le problème autrement et je suis arrivé à faire ceci

    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <Image
                        style={css.jumbotronImage}
                        source={imageHeaderStation ? 
                            {uri: 'https://bud.eco-sensors.ch/img/stations/station-'+ imageHeaderStation +'.jpg'} :
                            imageHeader ? require('@/assets/images/app/header1.jpg'):
                            require('@/assets/images/app/header.jpg')}
    />

    Le problème que je rencontre encore c'est que je n'arrive toujours pas à faire cela, sachant que imageHeader vaut header1.jpg

    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <Image
                        style={css.jumbotronImage}
                        source={imageHeaderStation ? 
                            {uri: 'https://bud.eco-sensors.ch/img/stations/station-'+ imageHeaderStation +'.jpg'} :
                            imageHeader ? require('@/assets/images/app/'+imageHeader):
                            require('@/assets/images/app/header.jpg')}
    />

    Ceci m'affiche le message d'erreur
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <Image
                        style={css.jumbotronImage}
                        source={imageHeaderStation ? 
                            {uri: 'https://bud.eco-sensors.ch/img/stations/station-'+ imageHeaderStation +'.jpg'} :
                            imageHeader ? require('@/assets/images/app/${imageHeader}'):
                            require('@/assets/images/app/header.jpg')}
                    />

    @/assets/images/app/${imageHeader} could not be found within the project or in there directories node_module

Discussions similaires

  1. Utilisation de condition dans une boucle for-each
    Par siro1 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/03/2012, 17h07
  2. [XL-2007] Utiliser "OU" dans la condition
    Par AgriPhilou dans le forum Excel
    Réponses: 3
    Dernier message: 06/02/2011, 20h02
  3. Utilisation fonction dans condition
    Par luc_chivas dans le forum Designer
    Réponses: 2
    Dernier message: 22/01/2010, 10h23
  4. Utilisation de () dans une condition
    Par yann123456 dans le forum Langage
    Réponses: 3
    Dernier message: 27/02/2009, 10h42
  5. utilisation de condition dans un tabular
    Par strohunter dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 0
    Dernier message: 01/05/2008, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo