Partage
  • Partager sur Facebook
  • Partager sur Twitter

[COURS] Développement mobile React Native

    29 juin 2020 à 23:45:22

     ssAr63 a écrit:

    Bonjour à tous,

    Le cours sur React Native a été publié, voici le lien : https://openclassrooms.com/fr/courses/4902061-developpez-une-application-mobile-react-native

    J'espère qu'il vous plaira, bon apprentissage :)

    -
    Edité par sAr63 12 septembre 2018 à 19:34:16

    je suis blocquer au niveau de ton cours sur React-Native au niveau du cycle de vie d'un component

    • Partager sur Facebook
    • Partager sur Twitter
      16 juillet 2020 à 17:09:12 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


        21 juillet 2020 à 20:06:45

        Bonjour à tous,
        Je me retrouve exactement avec le même problème. Je me faisais une joie de comprendre et réaliser cette App. Est-ce que quelqu'un peut m'aider? Pour info, ce qui est affiché par defaut sur App.js est automatique! Je n'ai absolument pas la même chose comme dans le cours avec "render". Donc je ne peux pas aller plus loin :(
        Merci d'avance pour votre aide!


        DimitriStachowski a écrit:

        Bonjour à tous, 

        je commence à peine le tutoriel, que je me retrouve face à une impasse. 

        Déjà dans le tutoriel il est écrit que l'on devrait se retrouver avec ce code-ci : 

        //App.js 
        
        import React from 'react';
        import { StyleSheet, Text, View } from 'react-native';
        
        export default class App extends React.Component {
          render() {
            return (
              <View style={styles.container}>
                <Text>Open up App.js to start working on your app!</Text>
              </View>
            );
          }
        }
        
        const styles = StyleSheet.create({
          container: {
            flex: 1,
            backgroundColor: '#fff',
            alignItems: 'center',
            justifyContent: 'center',
          },
        });

        Sauf que moi, je me retrouve avec ce code-ci : 

        import React from 'react';
        import { StyleSheet, Text, View } from 'react-native';
        
        export default function App() {
          return (
            <View style={styles.container}>
              <Text>Open up App.js to start working on your app!</Text>
            </View>
          );
        }
        
        const styles = StyleSheet.create({
          container: {
            flex: 1,
            backgroundColor: '#fff',
            alignItems: 'center',
            justifyContent: 'center',
          },
        });
        

        La différence est au niveau de "export default function App()..."

        Et quand j'essais de mettre comme dans le cours, l'élément "Component" de "React.Component" est orange/rouge. Et j'ai des messages d'erreurs lorsque je regarde mon émulateur...

        Je suis un peu perdu et j'ignore pourquoi je ne me retrouve pas avec le même texte. 

        Merci de votre aide ! :)





        -
        Edité par JessicaKuijer 21 juillet 2020 à 20:07:42

        • Partager sur Facebook
        • Partager sur Twitter
          29 juillet 2020 à 20:39:00

          Bonjour,

          de mon côté je suis bloqué à l'étape "persistance des données", j'ai une erreur : redux-persist failed to create sync storage. falling back to noop storage

          en regardant dans la doc j'ai bien vue qu'on est passé à une V6, j'ai testé les codes exemples de la doc mais ca ne fonctionne pas mieux.

          qu'est-ce que je fais mal ?

          Merci :)

          // App.js
          
          import React from 'react'
          import Navigation from './Navigation/navigation'
          import { Provider } from 'react-redux';
          import Store from './Store/configureStore'
          import { persistStore } from 'redux-persist'
          import { PersistGate } from 'redux-persist/integration/react'
          
          export default class App extends React.Component {
            render() {
              let persistor = persistStore(Store)
              return (
                <Provider store={Store}>
                  <PersistGate persistor={persistor}>
                    <Navigation />
                  </PersistGate>
                </Provider>
              )
            }
          }
          // Store/configureStore.js
          
          import { createStore } from 'redux'
          import toggleFavorite from './Reducers/favoriteReducer'
          import SettingAvatar from './Reducers/avatarReducer'
          
          import { persistCombineReducers } from 'redux-persist'
          import storage from 'redux-persist/lib/storage'
          
          const rootPersistConfig = {
            key: 'root',
            storage: storage
          }
          
          export default createStore(persistCombineReducers(rootPersistConfig, {toggleFavorite, SettingAvatar}))



          • Partager sur Facebook
          • Partager sur Twitter
            13 août 2020 à 23:48:16

            Salut,

            j'arrive surement trop tard mais c'est peut etre ça

            import {AsyncStorage} from 'react-native';
            const rootPersistConfig = {
            key: 'root',
            storage: AsyncStorage,
            };
            • Partager sur Facebook
            • Partager sur Twitter
              8 septembre 2020 à 18:35:54

              Bonjour,

              Je suis le cours depuis quelques heures et j'obtiens une erreur au chapitre sur la navigation : "Appréhendez le setState"

              Voici mon code :

              _displayDetailForFilm (idFilm) {
               
                     this.props.navigation.navigate("FilmDetail", { idFilm: idFilm })
                 }



              J'ai beau recopier exactement le même code que celui du cours, j'obtiens l'erreur suivante :

              Si quelqu'un peut m'aider sur le sujet, merci beaucoup :)

              • Partager sur Facebook
              • Partager sur Twitter
                13 septembre 2020 à 2:57:00

                Bonjour il me semble que l'utilisation du composant react-navigation à changé par rapport à ce qui montré sur la partie concevez une navigation entre vos vues du cours la documentation à l'air de montré un usage différent ( dés l'import des différents type de navigation qui on été séparé dans des sous espace de noms ).

                Et il semble que NPM télécharge cette nouvelle version ( par défaut ) des gens on des problème de "module not found" après installation les chemin ayant changé

                peut-être que juste précisé la version à téléchargé du composant pour être calé sur celui du cours pourrait dans un premier temps réglé le problème

                npm install --save react-navigation@version-du-cours



                -
                Edité par SamuelGaborieau3 13 septembre 2020 à 2:57:49

                • Partager sur Facebook
                • Partager sur Twitter

                suggestion de présentation.

                  17 septembre 2020 à 16:42:56

                  Bonjour à tous, j ai lu pratiquement entièrement le sujet sans trouver de réponses ou même de personnes ayant eu le même problème que moi..

                  Je suis au début du cours , au chapitre "utilisez les props", sur l'exercice ou il faut styliser le titre/description..., bon déja je n'ai pas reussi l'exercice tout seul sans la solution x), mais c est surtout que même avec la solution je suis bloqué à cause de l'image, en effet en face de source j'ai juste ecrit image comme sur la solution mais sur mon telephone, ca me dit "image" is not defined ou quelque chose dans le genre...

                  Si quelqu un pourrait m aider ca serait cool :) je laisse un c/c de mon code ici

                  Merci d avance

                  import React from 'react'
                  import { StyleSheet, View, Text } from 'react-native'
                  
                  class FilmItem extends React.Component {
                      render () {
                          return (
                            <View style={styles.main_container}>
                            <Image
                            style={styles.image}
                            source={{ uri: "image" }}
                          />
                              <View style={styles.content_container}>
                              <View style={styles.header_container}>
                                <Text style={styles.title_text}>Titre du film</Text>
                                <Text style={styles.vote_text}>Vote</Text>
                              </View>
                              <View style={styles.description_container}>
                                <Text style={styles.description_text} numberOfLines={6}>Description</Text>
                              </View>
                              <View style={styles.date_container}>
                                <Text style={style.date_text}>Sorti le 00/00/0000</Text>
                                </View>
                              </View>
                            </View>
                          )
                      }
                  }



                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 septembre 2020 à 12:01:27

                    Bonjour

                    Finalement j 'ai reglé ce problème tout seul hier, j'avais juste oublié d'importer le composant React native ' Image ' .

                    Par contre maintenant je suis bloqué au chapitre initiez vous aux cycles de vie des component, même en faisant copier/ coller le code de l'exemple , 'ai une erreur qui s'affiche sur mon iphone " TypeError : undefined is not an object (evaluating.genres.map"

                    Je vais continuer a chercher pourquoi tout seul mais si jamais quelqu'un passe par la :)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 septembre 2020 à 13:49:38

                      SamuelGaborieau3 a écrit:

                      Bonjour il me semble que l'utilisation du composant react-navigation à changé par rapport à ce qui montré sur la partie concevez une navigation entre vos vues du cours la documentation à l'air de montré un usage différent ( dés l'import des différents type de navigation qui on été séparé dans des sous espace de noms ).

                      Et il semble que NPM télécharge cette nouvelle version ( par défaut ) des gens on des problème de "module not found" après installation les chemin ayant changé

                      peut-être que juste précisé la version à téléchargé du composant pour être calé sur celui du cours pourrait dans un premier temps réglé le problème

                      npm install --save react-navigation@version-du-cours



                      @SamuelGaborieau3 : Merci de ta réponse mais je ne comprends pas ta commande -> npm install --save react-navigation@version-du-cours

                      Peux-tu m'aiguiller ? :)



                      -
                      Edité par connexion61 20 septembre 2020 à 13:52:33

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 septembre 2020 à 18:50:20

                        connexion61 a écrit:

                        SamuelGaborieau3 a écrit:

                        Bonjour il me semble que l'utilisation du composant react-navigation à changé par rapport à ce qui montré sur la partie concevez une navigation entre vos vues du cours la documentation à l'air de montré un usage différent ( dés l'import des différents type de navigation qui on été séparé dans des sous espace de noms ).

                        Et il semble que NPM télécharge cette nouvelle version ( par défaut ) des gens on des problème de "module not found" après installation les chemin ayant changé

                        peut-être que juste précisé la version à téléchargé du composant pour être calé sur celui du cours pourrait dans un premier temps réglé le problème

                        npm install --save react-navigation@version-du-cours



                        @SamuelGaborieau3 : Merci de ta réponse mais je ne comprends pas ta commande -> npm install --save react-navigation@version-du-cours

                        Peux-tu m'aiguiller ? :)



                        -
                        Edité par connexion61 il y a environ 4 heures

                        J'ai eu le même problème que toi, donc j ' ai fait npm install --save react-navigation@3.0.6

                        J ai fait pause sur le cours et je crois que le formateur possède cette version, en tout cas moi j'ai pu avancer sans ce problème :)



                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 septembre 2020 à 23:46:54

                          connexion61 a écrit:

                          SamuelGaborieau3 a écrit:

                          Bonjour il me semble que l'utilisation du composant react-navigation à changé par rapport à ce qui montré sur la partie concevez une navigation entre vos vues du cours la documentation à l'air de montré un usage différent ( dés l'import des différents type de navigation qui on été séparé dans des sous espace de noms ).

                          Et il semble que NPM télécharge cette nouvelle version ( par défaut ) des gens on des problème de "module not found" après installation les chemin ayant changé

                          peut-être que juste précisé la version à téléchargé du composant pour être calé sur celui du cours pourrait dans un premier temps réglé le problème

                          npm install --save react-navigation@version-du-cours



                          @SamuelGaborieau3 : Merci de ta réponse mais je ne comprends pas ta commande -> npm install --save react-navigation@version-du-cours

                          Peux-tu m'aiguiller ? :)



                          -
                          Edité par connexion61 il y a environ 9 heures

                          lors qu'on install un package sur npm on peut précisé une version que l'on veut en rajoutant un @ suivit d'une version spécifique, le @version-du-cours demande quelle version de react-navigation le cours utilise. @StevenYo à réussit à suivre le cours avec la version@3.06

                          mais la page npm de la version indique que cette version n'est plus maintenu à long terme et qu'il faut utilisé au minimum la version 4.0.0

                          Si le cours utilise vraiment une version antérieur à la version 4, peut être qu'une mise à jour de ce chapitre pourrait être intéressant..



                          • Partager sur Facebook
                          • Partager sur Twitter

                          suggestion de présentation.

                            23 septembre 2020 à 20:51:18

                            Bonjour,

                            J'ai fait la mise à jour malheureusement cela ne résout pas le problème, j'ai toujours l'erreur : "TypeError: undefined is not an object (evaluating 'this.props.navigation'

                            :/

                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 septembre 2020 à 6:37:42

                              Bonjour @connexion61 TypeError undefined is not a object ne doit probablement pas venir de la mise à jour,

                              Tu peut peut-être nous posté le contenu du composant Search ( notament de la ligne 60 ) qui à l'air d'être directement accusé par le message de ton erreur,

                              voir même ouvrir un sujet sur le forum dans la catégorie javascript.

                              L'erreur indique que sur une donnée qui n'est pas définie ( undefined ) tu as essayé d'appelé un attribut où une méthode, pour essayé de réglé ce problème tu peut faire des console.log des données que tu utilise dans le composant Search et voir dans le résultat des logs si une données na pas la valeur que tu attendais ( comme undefined à la place d'un object par exemple ). Comme ça tu seras précisément de qu'elle donnée vient l'erreur et se seras plus facile de la corrigé.

                              • Partager sur Facebook
                              • Partager sur Twitter

                              suggestion de présentation.

                                25 septembre 2020 à 18:41:11

                                Bonjour,

                                Voici le contenu de mon Search.js

                                // Components/Search.js
                                
                                import React from 'react'
                                import { StyleSheet, View, TextInput, Button, Text, FlatList, ActivityIndicator } from 'react-native'
                                import FilmItem from './FilmItem'
                                import { getFilmsFromApiWithSearchedText } from '../API/TMDBApi'
                                
                                class Search extends React.Component {
                                
                                  constructor(props) {
                                    super(props)
                                    this.searchedText = ""
                                    this.page = 0
                                    this.totalPages = 0
                                    this.state = {
                                      films: [],
                                      isLoading: false
                                    }
                                  }
                                
                                  _loadFilms() {
                                    if (this.searchedText.length > 0) {
                                      this.setState({ isLoading: true })
                                      getFilmsFromApiWithSearchedText(this.searchedText, this.page+1).then(data => {
                                          this.page = data.page
                                          this.totalPages = data.total_pages
                                          this.setState({
                                            films: [ ...this.state.films, ...data.results ],
                                            isLoading: false
                                          })
                                      })
                                    }
                                  }
                                
                                  _searchTextInputChanged(text) {
                                    this.searchedText = text
                                  }
                                
                                  _displayLoading() {
                                    if (this.state.isLoading) {
                                      return (
                                        <View style={styles.loading_container}>
                                          <ActivityIndicator size='large' />
                                
                                        </View>
                                      )
                                    }
                                  }
                                
                                  _searchFilms() {
                                    this.page = 0
                                    this.totalPages = 0
                                    this.setState({
                                      films: [],
                                    }, () => {
                                        this._loadFilms()
                                    })
                                  }
                                
                                  _displayDetailForFilm (idFilm) {
                                
                                       this.props.navigation.navigate("FilmDetail", { idFilm: idFilm })
                                   }
                                
                                  render() {
                                    return (
                                      <View style={styles.main_container}>
                                        <TextInput
                                          style={styles.textinput}
                                          placeholder='Titre du film'
                                          onChangeText={(text) => this._searchTextInputChanged(text)}
                                          onSubmitEditing={() => this._searchFilms()}
                                        />
                                        <Button title='Rechercher' onPress={() => this._searchFilms()}/>
                                        <FlatList
                                          data={this.state.films}
                                          keyExtractor={(item) => item.id.toString()}
                                          onEndReachedThreshold={0.5}
                                          onEndReached={() => {
                                              if (this.page < this.totalPages) {
                                                 this._loadFilms()
                                              }
                                          }}
                                          renderItem={({item}) => <FilmItem film={item} displayDetailForFilm={this._displayDetailForFilm}/>}
                                        />
                                        {this._displayLoading()}
                                      </View>
                                    )
                                  }
                                }
                                
                                const styles = StyleSheet.create({
                                  main_container: {
                                    flex: 1,
                                    marginTop: 20
                                  },
                                  textinput: {
                                    marginLeft: 5,
                                    marginRight: 5,
                                    height: 50,
                                    borderColor: '#000000',
                                    borderWidth: 1,
                                    paddingLeft: 5
                                  },
                                  loading_container: {
                                    position: 'absolute',
                                    left: 0,
                                    right: 0,
                                    top: 100,
                                    bottom: 0,
                                    alignItems: 'center',
                                    justifyContent: 'center'
                                  }
                                })
                                
                                export default Search
                                



                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 septembre 2020 à 14:55:51

                                  Re bonjour bon ben this.props.navigation et undefined dans ton composant et si tu appel une methode ( comme navigate ) dessus ben TypeError undefined is not a object,

                                  pour le vérifié dans ton constructeur tu peut ajouté un log

                                  de la donnée et regardé ce quelle contient dans ton terminal au moment de l'execution:

                                    constructor(props) {
                                      super(props)
                                      this.searchedText = ""
                                      this.page = 0
                                      this.totalPages = 0
                                      this.state = {
                                        films: [],
                                        isLoading: false
                                      }
                                  
                                      // logs toutes les props
                                      console.log( props );
                                  
                                      // logs la props navigation
                                      console.log( props.navigation ); 
                                    }

                                  Pour une raison où une autre la props navigation na pas été hydraté puisque ces une props le problème vient du composant parent qui ne donne pas la props à sont composant enfant..

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  suggestion de présentation.

                                    27 septembre 2020 à 15:25:01

                                    Bonjour

                                    J'aurais besoin d aide, j en suis a la partie ou il faut éjecter l app pour en faire une application react native mais impossible pour moi de la lancer sur l'émulateur android que j ai, ça me met un message d'erreur "  Command `run-android` unrecognized. Make sure that you have run `npm install` and that you are inside a react-native project. "

                                    Exactement pareil quand je veux lancer la commande " react-native link" ça me met " react-native link Command `link` unrecognized. Make sure that you have run `npm install` and that you are inside a react-native project. "

                                    J ai fait comme dis dans le cours, j 'ai crée un nouveau dossier, lancer react native init dedans, copier-coller les fichiers que le formateur dis de copier, mais toujours ce même problème, je suis bloque dessus depuis une semaine, je ne sais pas quoi faire..

                                    Merci d'avance a celui qui pourra m aider :)

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 septembre 2020 à 23:32:53

                                      Bonjour à tous,

                                      Je viens de commencer ce cours et je suis bloqué au moment de l'import des films au chapitre "utiliser les props".

                                      En effet, lorsque je souhaite passer de:

                                      // Components/Search.js
                                      
                                      render() {
                                          return (
                                            <View style={styles.main_container}>
                                              <TextInput style={styles.textinput} placeholder='Titre du film'/>
                                              <Button title='Rechercher' onPress={() => {}}/>
                                              {/* Ici j'ai simplement repris l'exemple sur la documentation de la FlatList */}
                                              <FlatList
                                                data={[{key: 'a'}, {key: 'b'}]}
                                                renderItem={({item}) => <Text>{item.key}</Text>}
                                              />
                                            </View>
                                          )
                                      }

                                      où tout se passe comme prévu chez moi et qui affiche correctement "a b", à :

                                      // Components/Search.js
                                      
                                      import films from '../Helpers/filmsData'
                                      
                                      render() {
                                          return (
                                            <View style={styles.main_container}>
                                              <TextInput style={styles.textinput} placeholder='Titre du film'/>
                                              <Button title='Rechercher' onPress={() => {}}/>
                                      
                                      <FlatList
                                        data={films}
                                        renderItem={({item}) => <Text>{item.title}</Text>}
                                      />

                                      issu de "https://openclassrooms.com/fr/courses/4902061-developpez-une-application-mobile-react-native/4978176-utilisez-les-props", les titres de films ne s'affichent pas chez moi. 

                                      Est-ce dû à la version du npm installé? 

                                      Quelqu'un aurait-il une idée afin de me débloquer?

                                      Merci de votre temps.

                                      Cordialement.

                                      -
                                      Edité par LéoJellimann 27 septembre 2020 à 23:37:22

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        29 septembre 2020 à 19:30:55


                                        Bonjour,


                                        J'ai ajouté le code suivant dans mon Search.js :

                                        class Search extends React.Component {
                                        
                                          constructor(props) {
                                            super(props)
                                            this.searchedText = ""
                                            this.page = 0
                                            this.totalPages = 0
                                            this.state = {
                                              films: [],
                                              isLoading: false
                                            }
                                        
                                          // logs toutes les props
                                          console.log( props );
                                        
                                          // logs la props navigation
                                          console.log( props.navigation );
                                          }
                                        


                                        Cependant, je n'arrive pas à récupérer les logs, peux-tu me dire ou je peux y avoir accès dans Atom ?


                                        Merci :)



                                        SamuelGaborieau3 a écrit:

                                        Re bonjour bon ben this.props.navigation et undefined dans ton composant et si tu appel une methode ( comme navigate ) dessus ben TypeError undefined is not a object,

                                        pour le vérifié dans ton constructeur tu peut ajouté un log

                                        de la donnée et regardé ce quelle contient dans ton terminal au moment de l'execution:

                                          constructor(props) {
                                            super(props)
                                            this.searchedText = ""
                                            this.page = 0
                                            this.totalPages = 0
                                            this.state = {
                                              films: [],
                                              isLoading: false
                                            }
                                        
                                            // logs toutes les props
                                            console.log( props );
                                        
                                            // logs la props navigation
                                            console.log( props.navigation ); 
                                          }

                                        Pour une raison où une autre la props navigation na pas été hydraté puisque ces une props le problème vient du composant parent qui ne donne pas la props à sont composant enfant..



                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          30 septembre 2020 à 0:06:24

                                          bonjour,

                                          "Cependant, je n'arrive pas à récupérer les logs, peux-tu me dire ou je peux y avoir accès dans Atom ?"

                                          Pour exécuter ton application tu as du faire un npm run start

                                          dans un terminal, ces dans ce terminal là que les console.log de ton application s'affiche.

                                          -
                                          Edité par SamuelGaborieau3 30 septembre 2020 à 0:07:01

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          suggestion de présentation.

                                            6 octobre 2020 à 5:48:26

                                            bonjour @connexion61

                                            this.props et un object et this.props.navigation et undefined ( n'existe pas )

                                            tu ne peut pas appelé de méthode sur undefined car il y en a pas.

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            suggestion de présentation.

                                              8 octobre 2020 à 16:51:49

                                              LéoJellimann a écrit:

                                              Bonjour à tous,

                                              Je viens de commencer ce cours et je suis bloqué au moment de l'import des films au chapitre "utiliser les props".

                                              En effet, lorsque je souhaite passer de:

                                              // Components/Search.js
                                              
                                              render() {
                                                  return (
                                                    <View style={styles.main_container}>
                                                      <TextInput style={styles.textinput} placeholder='Titre du film'/>
                                                      <Button title='Rechercher' onPress={() => {}}/>
                                                      {/* Ici j'ai simplement repris l'exemple sur la documentation de la FlatList */}
                                                      <FlatList
                                                        data={[{key: 'a'}, {key: 'b'}]}
                                                        renderItem={({item}) => <Text>{item.key}</Text>}
                                                      />
                                                    </View>
                                                  )
                                              }

                                              où tout se passe comme prévu chez moi et qui affiche correctement "a b", à :

                                              // Components/Search.js
                                              
                                              import films from '../Helpers/filmsData'
                                              
                                              render() {
                                                  return (
                                                    <View style={styles.main_container}>
                                                      <TextInput style={styles.textinput} placeholder='Titre du film'/>
                                                      <Button title='Rechercher' onPress={() => {}}/>
                                              
                                              <FlatList
                                                data={films}
                                                renderItem={({item}) => <Text>{item.title}</Text>}
                                              />

                                              issu de "https://openclassrooms.com/fr/courses/4902061-developpez-une-application-mobile-react-native/4978176-utilisez-les-props", les titres de films ne s'affichent pas chez moi. 

                                              Est-ce dû à la version du npm installé? 

                                              Quelqu'un aurait-il une idée afin de me débloquer?

                                              Merci de votre temps.

                                              Cordialement.

                                              -
                                              Edité par LéoJellimann 27 septembre 2020 à 23:37:22

                                              Bonjour, tu peux nous montrer ton fichier ../Helpers/filmsData

                                              Et tu peux nous indiquez si tu as quelconques erreurs dans la console ou autre ?

                                              -
                                              Edité par MaximeDétaille 8 octobre 2020 à 16:53:00

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                10 octobre 2020 à 14:45:10

                                                SamuelGaborieau3 a écrit:

                                                bonjour @connexion61

                                                this.props et un object et this.props.navigation et undefined ( n'existe pas )

                                                tu ne peut pas appelé de méthode sur undefined car il y en a pas.


                                                Bonjour @SamuelGaborieau3,

                                                Cela fait plusieurs jours que je cherche comment résoudre ce problème de méthode non définis, malheureusement pour moi je n'y arrive pas.

                                                Peux-tu m'éclairer un peu plus sur la manière comment procéder ?

                                                Merci :)

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  2 novembre 2020 à 13:32:43

                                                  Bonjour,
                                                  J'ai commencé le cours. J'ai une petite problème pour installer watchmanconfig. j'ai fait toutes les étapes pour installer cela mais, je n'arrive pas la voir.
                                                  pouvez quelqu'un m'aider, s'il vous plaît?
                                                  screenshot
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    7 novembre 2020 à 16:37:41

                                                    MaximeDétaille a écrit:

                                                    LéoJellimann a écrit:

                                                    Bonjour à tous,

                                                    Je viens de commencer ce cours et je suis bloqué au moment de l'import des films au chapitre "utiliser les props".

                                                    En effet, lorsque je souhaite passer de:

                                                    // Components/Search.js
                                                    
                                                    render() {
                                                        return (
                                                          <View style={styles.main_container}>
                                                            <TextInput style={styles.textinput} placeholder='Titre du film'/>
                                                            <Button title='Rechercher' onPress={() => {}}/>
                                                            {/* Ici j'ai simplement repris l'exemple sur la documentation de la FlatList */}
                                                            <FlatList
                                                              data={[{key: 'a'}, {key: 'b'}]}
                                                              renderItem={({item}) => <Text>{item.key}</Text>}
                                                            />
                                                          </View>
                                                        )
                                                    }

                                                    où tout se passe comme prévu chez moi et qui affiche correctement "a b", à :

                                                    // Components/Search.js
                                                    
                                                    import films from '../Helpers/filmsData'
                                                    
                                                    render() {
                                                        return (
                                                          <View style={styles.main_container}>
                                                            <TextInput style={styles.textinput} placeholder='Titre du film'/>
                                                            <Button title='Rechercher' onPress={() => {}}/>
                                                    
                                                    <FlatList
                                                      data={films}
                                                      renderItem={({item}) => <Text>{item.title}</Text>}
                                                    />

                                                    issu de "https://openclassrooms.com/fr/courses/4902061-developpez-une-application-mobile-react-native/4978176-utilisez-les-props", les titres de films ne s'affichent pas chez moi. 

                                                    Est-ce dû à la version du npm installé? 

                                                    Quelqu'un aurait-il une idée afin de me débloquer?

                                                    Merci de votre temps.

                                                    Cordialement.

                                                    -
                                                    Edité par LéoJellimann 27 septembre 2020 à 23:37:22

                                                    Bonjour, tu peux nous montrer ton fichier ../Helpers/filmsData

                                                    Et tu peux nous indiquez si tu as quelconques erreurs dans la console ou autre ?

                                                    -
                                                    Edité par MaximeDétaille 8 octobre 2020 à 16:53:00

                                                    J'ai trouvé mon erreur merci :)

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      30 novembre 2020 à 23:37:11

                                                      Bonjour à tous.

                                                      J'ai suivi le tuto et j'aimerai comprendre une chose mais je ne trouve pas l'info.

                                                      J'aimerai savoir comment on utilise à la fois la partie web et la partie native.

                                                      Voici mon cas qui pose problème en utilisant  l'anthentification Gmail avec firebase.

                                                      Pour la partie web, pas de soucis.

                                                      Par contre si je veux utiliser sur mobile. Je suis obliger de passer par la fonction 'eject' et d'avoir mon projet modifier. Et à partir de ce moment, la je ne peux plus utiliser la partie web.

                                                      Avez vous eu le même soucis ? ou une maniére d'utiliser à la fois la partie web et mobile.

                                                       Merci d'avance.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        13 décembre 2020 à 18:15:44

                                                        Bonjour,

                                                        J'ai rencontré une difficulté lors de ce cours au moment de faire le "défilement infini". A force de scroll, une erreur "Encountered two children with the same key, %d. Keys should be unique so that component maintain their identity across update". 

                                                        Je ne pense pas être le seul à avoir rencontré ce bug, c'est pourquoi je souhaite y apporter une solution :

                                                        Ceci est le code d'origine:

                                                        <FlatList
                                                          data={this.state.films}
                                                          keyExtractor={(item) => item.id.toString()}
                                                          renderItem={({item}) => <FilmItem film={item}/>}
                                                          onEndReachedThreshold={0.5}
                                                          onEndReached={() => {
                                                              if (this.page < this.totalPages) { // On vérifie qu'on n'a pas atteint la fin de la pagination (totalPages) avant de charger plus d'éléments
                                                                 this._loadFilms()
                                                              }
                                                          }}
                                                        />

                                                        La correction se fait au niveau du keyExtractor : 

                                                        <FlatList
                                                          data={this.state.films}
                                                          keyExtractor={(item, index) => index.toString()}
                                                          renderItem={({item}) => <FilmItem film={item}/>}
                                                          onEndReachedThreshold={0.5}
                                                          onEndReached={() => {
                                                              if (this.page < this.totalPages) { // On vérifie qu'on n'a pas atteint la fin de la pagination (totalPages) avant de charger plus d'éléments
                                                                 this._loadFilms()
                                                              }
                                                          }}
                                                        />


                                                        C'est la façon d'utiliser le keyExtractor la plus standard que j'ai trouvé, je ne sais pas pourquoi ce n'est pas celle utilisée dans le cours et je ne sais pas non plus en quoi ce qui était dans le cours provoquait ce bug. 

                                                        Si quelqu'un a des réponses ou des détails à apporter à mon poste, je vous en serais reconnaissant ! 

                                                        Bon courage à tous,

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          20 décembre 2020 à 19:03:31

                                                          Bonjour. Je suis actuellement le cours  développer une application mobile  avec React Native. Je n'arrive pas à afficher infos récupérées depuis le site Wordpress.Je récupère bien les données dans la méthode getAdressesFromApiWithSearchedText mais c'est un array , j'ai essayé d'utiliser 'map' mais je n'arrive pas à afficher les données retournées sur l'écran. Pour être plus précis, j'ai besoin de conseil pour afficher les données retournées dans un tableau. Je n'ai aucune erreur.

                                                          Merci par avance.

                                                          Voici mes fichiers.

                                                          Search.tsx

                                                          import React from 'react';
                                                          import { StyleSheet, View, TextInput, Button, Text,FlatList,ActivityIndicator } from 'react-native';
                                                          import AdressesItem from '../Components/AdressesItems';
                                                          import {getAdressesFromApiWithSearchedText} from '../API/Wpv2';
                                                          
                                                          
                                                          
                                                          
                                                          class Search extends React.Component {
                                                          
                                                          
                                                            constructor(props) {
                                                          
                                                               super(props)
                                                          
                                                               this.searchedText = " " // Initialisation de notre donnée searchedText en dehors du state
                                                               this.state = {
                                                                 adresses: [],
                                                          
                                                                 isLoading:false
                                                          
                                                               }
                                                          
                                                             }
                                                          
                                                             _loadAdresses() {
                                                          
                                                               if (this.searchedText.length > 0)
                                                               { // Seulement si le texte recherché n'est pas vide
                                                                 getAdressesFromApiWithSearchedText(this.searchedText).then(data => {
                                                                     this.setState({ adresses: data.results, isLoading:false })
                                                          
                                                                 })
                                                          
                                                                 getAdressesFromApiWithSearchedText("").then(data => console.log(data));
                                                               }
                                                          
                                                             }
                                                          
                                                             _searchTextInputChanged(text) {
                                                               this.searchedText = text // Modification du texte recherché à chaque saisie de texte, sans passer par le setState comme avant
                                                             }
                                                          
                                                          
                                                             _displayLoading() {
                                                                   if (this.state.isLoading) {
                                                                     return (
                                                                       <View style={styles.loading_container}>
                                                                         <ActivityIndicator size='large' />
                                                          
                                                                       </View>
                                                                     )
                                                                   }
                                                                 }
                                                          
                                                          
                                                            render() {
                                                              console.log(this.state.isLoading)
                                                            
                                                              return (
                                                          
                                                                <View style={styles.main_container}>
                                                                <TextInput
                                                                  style={styles.textinput}
                                                                  placeholder='Rechercher une adresse'
                                                                  onChangeText={(text) => this._searchTextInputChanged(text)}
                                                                  onSubmitEditing={() => this._loadAdresses()}
                                                                />
                                                                <Button title='Rechercher' onPress={() => this._loadAdresses()}/>
                                                          
                                                                <FlatList
                                                                  data={this.state.adresses}
                                                                  keyExtractor={(item) => item.id.toString()}
                                                                  renderItem={({item}) => <AdressesItem adresse={item}/>}
                                                                />
                                                                { this.state.isLoading ?
                                                                   <View style={styles.loading_container}>
                                                                     <ActivityIndicator size='large' />
                                                                   </View>
                                                                   : null
                                                               }
                                                              </View>
                                                          
                                                              )
                                                            }
                                                          
                                                          
                                                          
                                                          
                                                          }
                                                          
                                                          const styles = StyleSheet.create({
                                                            main_container: {
                                                              flex: 1,
                                                              marginTop: 20,
                                                              color : '#000000',
                                                            },
                                                            textinput: {
                                                              margin: 5,
                                                              marginRight: 5,
                                                              height: 50,
                                                              borderColor: '#000000',
                                                              borderWidth: 1,
                                                              paddingLeft: 5,
                                                              borderRadius:5
                                                            },
                                                            loading_container: {
                                                              position: 'absolute',
                                                              left: 0,
                                                              right: 0,
                                                              top: 100,
                                                              bottom: 0,
                                                              alignItems: 'center',
                                                              justifyContent: 'center'
                                                            }
                                                          })
                                                          
                                                          export default Search

                                                          AdressItems.tsx

                                                          import React from 'react';
                                                          import { StyleSheet, View, Image, Text } from 'react-native';
                                                          import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
                                                          import {getImageFromApi} from '../API/Wpv2';
                                                          
                                                          class AdressesItems extends React.Component {
                                                            render()  {
                                                              const adresse = this.props.adresse
                                                          
                                                          
                                                          
                                                          
                                                              return (
                                                                <View style={styles.main_container}>
                                                                  <Image
                                                                    style={styles.image}
                                                                    source={{uri: getImageFromApi(adresse.poster_path)}}
                                                                  />
                                                                  <View style={styles.content_container}>
                                                                    <View style={styles.header_container}>
                                                                      <Text style={styles.title_text}>{adresse.title.rendered}</Text>
                                                                      <Text style={styles.vote_text}>{adresse.vote_average}</Text>
                                                                    </View>
                                                                    <View style={styles.description_container}>
                                                                      <Text style={styles.description_text} numberOfLines={6}>{adresse.overview}</Text>
                                                                    </View>
                                                                    <View style={styles.date_container}>
                                                                      <Text style={styles.date_text}>Sorti le {adresse.release_date}</Text>
                                                                    </View>
                                                                  </View>
                                                                </View>
                                                          
                                                              )
                                                          }
                                                          }
                                                          
                                                          const styles = StyleSheet.create({
                                                            main_container: {
                                                              height: 190,
                                                              flexDirection: 'row'
                                                            },
                                                            image: {
                                                              width: 120,
                                                              height: 180,
                                                              margin: 5,
                                                              backgroundColor: 'gray'
                                                            },
                                                            content_container: {
                                                              flex: 1,
                                                              margin: 5
                                                            },
                                                            header_container: {
                                                              flex: 3,
                                                              flexDirection: 'row'
                                                            },
                                                            title_text: {
                                                              fontWeight: 'bold',
                                                              fontSize: 14,
                                                              flex: 1,
                                                              flexWrap: 'wrap',
                                                              paddingRight: 5
                                                            },
                                                            vote_text: {
                                                              fontWeight: 'bold',
                                                              fontSize: 20,
                                                              color: '#666666'
                                                            },
                                                            description_container: {
                                                              flex: 7,
                                                          
                                                            },
                                                            description_text: {
                                                              fontStyle: 'italic',
                                                              color: '#666666'
                                                            },
                                                            date_container: {
                                                              flex: 1
                                                            },
                                                            date_text: {
                                                              textAlign: 'right',
                                                              fontSize: 14
                                                            }
                                                          })
                                                          
                                                          export default AdressesItems;
                                                          


                                                          Wpv2.tsx

                                                          export function getAdressesFromApiWithSearchedText (text) {
                                                          
                                                           const url = 'https://monsite.fr/wp-json/wp/v2/posts?' + text
                                                            return fetch(url)
                                                              .then((response) => response.json())
                                                              .catch((error) => console.error(error))
                                                          };





                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            4 janvier 2021 à 11:58:03

                                                            Bonjour

                                                            le cours react native est tres bien fait , mais dommage, il semble ne plus etre a jour, et meme en piochant dans la doc, je trouve pas comment faire. Je suis au chapitre react native navigation. 

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            [COURS] Développement mobile React Native

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            • Editeur
                                                            • Markdown