aide [react]

hedyLamarr
2021-05-01 17:20:05

Bonjour les kheys, je suis en L3 informatique et je suis une matière dev web ( c'est la première fois que j'en fais)

j'ai un bug et j'aimerais savoir si vous savez comment le résoudre:

je dois coder un twitter fait maison. sur les pages profil j'ai une bannière qui affiche les informations d'un compte utilisateur:

https://image.noelshack.com/fichiers/2021/17/6/1619882124-image-pasted-at-2021-5-1-15-29.jpg

3:29 PM

appelée comme ceci dans la méthode render de mainPage.js :

https://image.noelshack.com/fichiers/2021/17/6/1619882179-image-pasted-at-2021-5-1-15-30.jpg

BaniereProfil affiche la barre du screen au dessus.

quand je vais sur la page fil d'actualité , puis que je reviens sur le profil les compteurs se mettent à jour.
Par contre si je suis sur une page profil et que je veux passer à une autre page profil les compteurs ne se mettent pas à jour (seulement le pseudo sur la barre change)


import React, { useEffect, useState } from 'react'
import axios from 'axios'


export default function Baniere(props) {

const [nb_followers, getnb_followers] = useState(0);
const [nb_follows, getnb_follows] = useState(0);
const [nb_tweets_state, getnb_tweets] = useState(0);
const [follow_button_state, getfollow_button_state] = useState(0);
const [pseudo,getpseudo]=useState(props.pseudo);



const api = axios.create({
baseURL : '/api/',
timeout : 1000,
headers : {'X-Custom-Header' : 'foobar'}
});

useEffect(() => {
Update_baniere();
}, []);



const follow_button_maj = () => {
if (follow_button_state==0){
var chemin='/user/follow';
api.put(chemin,{pseudo:pseudo})
.then( () => {
Update_baniere().then( ()=>{
getfollow_button_state(1)
});


})
.catch(err => {
console.log(err);
});
}else{
var chemin='/user/unfollow';
api.put(chemin,{pseudo:pseudo})
.then( () => {
Update_baniere().then( ()=>{
getfollow_button_state(0)
});

})
.catch(err => {
console.log(err);
});
}
}



const Update_baniere = () => {

const getALLnb_followers = () => {
var chemin='/user/display/count/followers/'+pseudo;
api.get(chemin)
.then( response => {
const nb_followers__ = response.data.FollowersCount;
getnb_followers(nb_followers__);
})
.catch(err => {
console.log(err);
});
}

const getALLnb_follows = () => {
var chemin='/user/display/count/follows/'+pseudo;
api.get(chemin)
.then( response => {
const nb_follows__ = response.data.FollowsCount;
getnb_follows(nb_follows__);
})
.catch(err => {
console.log(err);
});
}

const get_nb_tweets = () => {
var chemin='/user/display/count/messages/'+pseudo;
api.get(chemin)
.then( response => {
const nb_tweets_ = response.data.nb_tweets;
getnb_tweets(nb_tweets_);
})
.catch(err => {
console.log(err);
});
}

Promise.all([getALLnb_followers, getALLnb_follows, get_nb_tweets]).then((values) => {
const follows=values[0];
const followe=values[1];
const nb_messages=values[2];

getnb_followers(follows);
getnb_follows(followe);
getnb_tweets(nb_messages);
});


}
const display_Baniere=(props) => {
return (
<div className="baniere">
<div className="nom">
<h1>{props.pseudo}</h1>
</div>

<div className="content_b">
<h2>{nb_tweets_state} posts</h2>
</div>

<div className="content_b">
<h2>{nb_follows} abonnements</h2>
</div>

<div className="content_b">
<h2> {nb_followers} abonnés </h2>
</div>

{
(props.selfPseudo!=pseudo)?
<div className="petitbouton_follow" onClick = { (event => follow_button_maj() ) } >
<div>
{
(follow_button_state==0)?
<>
Suivre
</>
:
<>
Ne plus suivre
</>

}
</div>
</div>
:
<></>
}
</div>
)
}

return (
<>
{display_Baniere(props)}
</>
)



}

3:31 PM

j'ai regardé et dans baniereProfil , la méthode useState n'est pas rappelée si je suis dans le cas ou je passe d'une page profil à une autre

auriez vous une idée de la source du bug? et comment le résoudre.. merci!

hedyLamarr
2021-05-01 17:24:54

En fait les requêtes fonctionnent c’est juste Usestate qui est pas rappelé si je passe d’une page profile directement à une autre

hedyLamarr
2021-05-01 17:33:30

J’aurai du mettre un Cul ca attire les kheys Informaticiens

-sangria-
2021-05-01 17:34:36

Utilise une fonction flèchée dans tes changements d'état

hedyLamarr
2021-05-01 17:36:08

Le 01 mai 2021 à 17:34:36 :
Utilise une fonction flèchée dans tes changements d'état

C’est à dire?

Ici?

const follows=values[0];
const followe=values[1];
const nb_messages=values[2];

getnb_followers(follows);
getnb_follows(followe);
getnb_tweets(nb_messages);

hedyLamarr
2021-05-01 19:39:34

Up

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.