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 :

Importer deux class dans une class


Sujet :

React

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2019
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Août 2019
    Messages : 30
    Points : 23
    Points
    23
    Par défaut Importer deux class dans une class
    Bonjour

    Je tente d 'importer deux class qui sont dans des fichier js séparés au sein d'une class qui est dans un troisième fichier js. Quand je le fais avec une class ça marche mais deux non.

    je teste certaines possibilité du code react tout en apprenant. Là je voulais apprendre à voir comment regrouper plusieurs fichier et class js dans un et tester les forms en react.

    Voici les 3 codes :

    1 ère class dans le fichier TxtCount :

    Code js : 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
     
    import React, { Component, useState }  from 'react'
     
    function TheOneWhoHasTheState() {
        const [count, setCount] = useState(0);
        let NumberCount = () => {
          setCount(count + 1);
        };
        return (
          <div>
            <p>Counter is now {count}</p>
            <TheButton onClck={NumberCount} />
            <TheButton onClck={NumberCount} />
            {TheTest}
          </div>
         );
      }
     
      const TheButton = ({ onClck }) => (
        <div onClick={onClck}> Click here to add </div>
      );
     
     const TheTest = (
     <div>
         <h1> sdfsdf</h1>
     </div>
     )
     
        class Txtcount extends Component {
     
            render () {
                return (
                    <TheOneWhoHasTheState/>
                )
            }
        }
     
        export default Txtcount;

    le second fichier TestEvent :

    Code js : 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
     
    import React, { Component } from 'react';
    class SimpleForm extends Component {
        constructor(props) {
          super(props);
     
          this.state = {
            fullName: ""
          };
        }
     
        handleSubmitForm(event) {
          alert("Full Name: " + this.state.fullName);
          event.preventDefault();
        }
     
        handleChange(event) {
          var value = event.target.value;
     
          this.setState({
            fullName: value
          });
        }
     
        render() {
          return (
            <form onSubmit={event => this.handleSubmitForm(event)}>
              <label>
                Full Name:
                <input
                  type="text"
                  value={this.state.fullName}
                  onChange={event => this.handleChange(event)}
                />
              </label>
              <input type="submit" value="Submit" />
              <p>{this.state.fullName}</p>        
            </form>
          );
        }
      }
     
      export default SimpleForm;

    le fichier app où je fusionne les deux :
    Code js : 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
     
    import React, { Component } from 'react';
    import Txtcount from './TxtCount';
    import SimpleForm from './TestEvent';
     
     
    class App extends Component {
        render() {
          return (
            <Txtcount />
            <SimpleForm />
     
          )
        }
      }
     
      export default App;

    voici le code d error :

    Line 10:9: Parsing error: Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?

    8 | return (
    9 | <Txtcount />
    > 10 | <SimpleForm />
    | ^
    11 |
    12 | )
    13 | }

    Merci pour l aide

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Salut,

    ton problème, c'est qu'un composant doit avoir une seule racine. Dans ton fichier app, tu renvoies Txtcount et SimpleForm.
    La bonne nouvelle, c'est que même si c'est qu'il existe un composant qui permet d'avoir un virtual node sans rendu, on l'appelle fragment (React.Fragment)

    c'est d'ailleurs ce que tu vois dans le message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class App extends Component {
        render() {
          return (
            <>
              <Txtcount />
              <SimpleForm />
            </>
          )
        }
      }
    A noter qu'à un moment, le raccourci <></> n'existait pas, il fallait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class App extends Component {
        render() {
          return (
            <React.Fragment>
              <Txtcount />
              <SimpleForm />
            </React.Fragment>
          )
        }
      }
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2019
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Août 2019
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    ok merci, j'ai bien compris

    Et merci pour le temps que tu donnes pour aider

Discussions similaires

  1. [PHP 5.2] Importer un tableau dans une classe
    Par nazoreen dans le forum Langage
    Réponses: 3
    Dernier message: 25/05/2010, 19h09
  2. Importation de méthodes dans une classe
    Par jarboo dans le forum C#
    Réponses: 1
    Dernier message: 25/07/2007, 12h21
  3. [POO] import d'objet dans une classe
    Par wdionysos dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2006, 21h05
  4. [Struts] [JavaBean] Deux beans dans une Action
    Par jak0 dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/05/2005, 16h02
  5. Import fichier ASCII dans une base
    Par pithier dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/02/2005, 19h03

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