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 :

re-render requete ajax


Sujet :

React

  1. #1
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut re-render requete ajax
    Bonjour, je souhaite mettre à jour ma page lors du changement de la route. Au premier chargement l'affichage se fait correctement depuis une autre page, mais quand je suis sur une page de ce type, il n'y a que la route qui se met à jour, pas la page.
    Voici mon code :
    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
    import React, {useEffect, useState} from 'react';
    import axios from 'axios';
    import ReactHtmlParser from 'react-html-parser';
    import {NavLink} from "react-router-dom";
    import {withRouter} from 'react-router-dom'
    import CmsPagination from '../services/CmsPagination'
     
    const CmsPages = ({history,match}) => {
        const [cms, setCms] = useState([]);
        const [page, setPage] = useState(CmsPagination.getUri(match.url));
     
        history.listen((location) => {
            console.log(location.pathname);
            setPage(CmsPagination.getUri(location.pathname));
            console.log(page);
            console.log('uri'+' ' + CmsPagination.getUri(location.pathname))
        });
     
     
        let options = {weekday: "long", year: "numeric", month: "long", day: "numeric"};
     
        useEffect(() => {
            axios.get('/api' + page )
                .then(response => response.data)
                .then(data => setCms(data['hydra:member']))
                .catch(error => console.log(error.response));
        }, []);
        return (
            <>
                {cms.map(c =>
                    <div className="container" key="{c.id}">
                        <div className="section">
                            <h5 className="pagetitle">{c.title}</h5>
                            <p>mis à jour le {new Date(c.updatedAt).toLocaleDateString('fr-FR', options)}.</p>
                            {ReactHtmlParser(c.content)}
                        </div>
                    </div>
                )}
            </>
        );
    };
    Je ne sais pas ce que je manque, je pensais qu'en mettant à jour avec setPage c’était suffisant.
    D'avance merci

  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,

    je pense que c'est pcq dans ton useEffect, tu as spécifié un tableau vide en 2ème paramètre.
    En faisant cela, l'effet ne se joue qu'au render initial. cf https://fr.reactjs.org/docs/hooks-ef...ipping-effects
    Essaye en mettant [page] à la place d'un tableau vide
    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
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Merci pour ta réponse mais malheureusement ça n'a rien changé.
    De mes tests il ressors que mes deux varaible cms et page ne se mettent pas à jour dans le callback de history.listen.

Discussions similaires

  1. [AJAX] Requete Ajax : accents
    Par Romalafrite dans le forum AJAX
    Réponses: 2
    Dernier message: 11/05/2009, 11h35
  2. [AJAX] Temporisation requete AJAX
    Par cerede2000 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/06/2007, 10h00
  3. [AJAX] deux requetes ajax dans une même page
    Par mitmit dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/05/2007, 12h52
  4. champs qui s'efface lors d'une requete ajax.
    Par starr dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2006, 08h33
  5. activer mod_proxy pour les requetes ajax
    Par xtaze dans le forum Apache
    Réponses: 1
    Dernier message: 17/05/2006, 17h45

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