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

Mobiles Discussion :

react Native Collapsible probleme : je veux ouvrir un seul element a la fois


Sujet :

Mobiles

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 75
    Points : 50
    Points
    50
    Par défaut react Native Collapsible probleme : je veux ouvrir un seul element a la fois
    j'ai ce Collapsible et quand je clique sur question ca ouvre toutes les reponses, je veux que ca ouvre juste celle sur la quelle je clique

    voici une image pour voir le probleme :
    Nom : phon.PNG
Affichages : 192
Taille : 48,1 Ko

    et le code source :

    Code : 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    import React, { Component } from "react";
    import Collapsible from 'react-native-collapsible';
    import { Text, View, StyleSheet, Button } from 'react-native';
    
    const  questions= [
      {
         id: 0,
         name: 'question1',
      },
      {
         id: 1,
         name: 'question2',
      },
      {
         id: 2,
         name: 'question3',
      },
      {
         id: 3,
         name: 'question4',
      }
    ]
    
    
    export default class AccordionHeaderContentStyleExample extends Component {
    
      
      state = {
        outerCollapse: true,
        innerCollapse: true,
      };
    
      render() {
       
        return (
    
            <View style={styles.container}>
        
                <Button
                  title={this.props.data.name}      
                  onPress={() =>
                  this.setState({ outerCollapse: !this.state.outerCollapse })}
                />
                <Collapsible collapsed={this.state.outerCollapse}>
                            
                     {questions.map(e=>
                      <View>
                        <Button 
                           title={e.name}
                           color="#42f4eb" 
                           onPress={() => this.setState({ innerCollapse: !this.state.innerCollapse })}/>        
                         <Collapsible collapsed={this.state.innerCollapse}>
                               <Text style={styles.center}>Reponse</Text>
                          </Collapsible>
                       </View>
                         )} 
                                  
                </Collapsible>
    
          </View>
          
        );
      }
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 0,
        justifyContent: 'center',
        backgroundColor: '#ecf0f1',
      },
      center: {
        textAlign: 'center'
      },
     
    });

  2. #2
    Futur Membre du Club
    Homme Profil pro
    -
    Inscrit en
    Mai 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mai 2019
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Différencier les "state" de chaque Collapsible
    Bonjour,

    Ce qui est normal puisque vos Collapsibles dépendent tous du même state.

    Vous devez gérer l'état de chaque "Collapsible" .


    Source : https://facebook.github.io/react-nat.../flatlist.html
    Code : 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
    25
    export default class AccordionHeaderContentStyleExample extends Component {
    
    ...
     state = {selected: (new Map(): Map<string, boolean>)};
    ...
    
    _onPress = (id : string) => {
        this.setState((state) => {
          // copy the map rather than modifying state.
          const selected = new Map(state.selected);
          selected.set(id, !selected.get(id)); // toggle
          return {selected};
        });
    }
    ...
    _renderItem = ({item}) => (
        <MyListItem
          id={item.id}
          onPressItem={this._onPressItem}
          selected={!!this.state.selected.get(item.id)}
          title={item.title}
       />
    ...
    }
    Bonne continuation

Discussions similaires

  1. Facebook sort React Native pour Android
    Par Olivier Famien dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 15/09/2015, 05h32
  2. Facebook abandonne HTML5 pour son framework React Native
    Par Olivier Famien dans le forum Actualités
    Réponses: 16
    Dernier message: 18/06/2015, 15h53
  3. Ouvrir une seule fenêtre interne à la fois
    Par adel_adl dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 06/12/2010, 12h44
  4. [Ex XP] je veux ouvrir et injecter dans les signets d'un modèle Word
    Par viavba dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/02/2009, 16h01
  5. [EasyPHP] probleme avec Firefox, ouvrir le fichier?
    Par PadaBen dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/09/2006, 14h42

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