I den forrige delen av denne opplæringsserien så du hvordan du implementerer oppdateringen og slett postfunksjonen for vårt React-bloggprogram. I denne veiledningen vil du implementere profilsiden for bloggprogrammet.
La oss begynne med å klone kildekoden fra den siste delen av serien.
https://github.com/royagasthyan/ReactBlogApp-EditDelete
Når katalogen er blitt klonet, naviger til prosjektkatalogen og installer de nødvendige avhengighetene.
cd ReactBlogApp-EditDelete npm installere
Start Node.js-serveren, og du vil få programmet å kjøre på http: // localhost: 7777 / index.html # /.
Først må du legge til et nytt menyelement på startsiden menyen som heter Profil
. På home.html
side, legg til en ny ul
element for profilsiden som vist:
Lagre endringene ovenfor og start serveren på nytt. Pek nettleseren din til http: // localhost: 7777 / og logg inn på programmet. Når du er logget inn, vil du kunne se menylisten med profillenken.
For profilmeny lenken til arbeid, må du legge til en ny rute til eksisterende ruter i home.jsx
fil.
ReactDOM.render (, document.getElementById ( 'app'));
I home.jsx
fil, opprett en ny komponent ShowProfile
. Legg til noen tilstandsvariabler for Navn
, passord
, e-post
, og id
. Inne i gjengivelsesmetoden til ShowProfile
komponent, legg til HTML for å gjengi profildetaljer. Her er hvordan ShowProfile
komponent ser ut:
klasse ShowProfile utvider React.Component konstruktør (rekvisitter) super (rekvisitter); this.state = name: ", email:", passord: ", id:"; componentDidMount () document.getElementById ('addHyperLink'). className = ""; document.getElementById ('homeHyperlink'). className = ""; document.getElementById ('profileHyperlink'). className = "active"; this.getProfile (); updateProfile () getProfile () render () return ()
Når profilsiden er lastet, må du hente detaljene fra databasen og fylle den i skjemaet. Legg til koden i getProfile
metode inne i ShowProfile
komponent for å gjøre AJAX-anropet for å få detaljer om brukeren.
axios.post ('/ getProfile', ) .then (funksjon (respons) ) .catch (funksjon (feil) console.log ('feil er', feil););
Når detaljene er mottatt i svaret, må du oppdatere tilstandsvariablene for det samme. Her er getProfile
metode fra ShowProfile
komponent:
getProfile () var selv = dette; axios.post ('/ getProfile', ) .then (funksjon (svar) if (response) self.setState (navn: response.data.name); self.setState (email: response.data .email); self.setState (passord: response.data.password);) .catch (funksjon (feil) console.log ('feil er', feil););
Inne i app.js
fil, opprett en metode som kalles getProfile
som vil håndtere POST-metallsamtalen fra ShowProfile
's getProfile
metode. De getProfile
metode inne i app.js
filen vil i stedet ringe til user.js
for å få detaljer fra databasen. Slik ser det ut:
app.post ('/ getProfile', funksjon (req, res) user.getUserInfo (sessions.username, function (result) res.send (result)))
Inne i user.js
fil, opprett en metode som kalles getUserInfo
som vil spørre MongoDB-databasen ved hjelp av brukernavnet for å få de nødvendige detaljene. Her er hvordan getUserInfo
metoden ser ut:
brukernavn, tilbakeringing) MongoClient.connect (url, funksjon (err, db) db.collection ('bruker'). findOne (email: brukernavn = null) callback (false) else callback (result);););
Som vist i koden ovenfor, ringer du til MongoDB ved hjelp av MongoClient
å spørre brukerens samling basert på e-postadressen. Når resultatet er mottatt, returneres det tilbake til tilbakeringingsfunksjonen.
Lagre endringene ovenfor og start om Node.js-serveren. Pek nettleseren din til http: // localhost: 7777 / # / og logg inn på programmet. Klikk på profillenken i menyen, og du vil kunne se profildetaljer som er fylt på siden.
For å håndtere navn og passord endring, må du definere to metoder kalt handleNameChange
og handlePasswordChange
i ShowProfile
komponent. Disse metodene vil angi tilstandsvariablene på tekstendring. Slik ser det ut:
handleNameChange (e) this.setState (navn: e.target.value) handlePasswordChange (e) this.setState (passord: e.target.value)
Bind metodene i ShowProfile
konstruktør.
konstruktør (rekvisitter) super (rekvisitter); this.handleNameChange = this.handleNameChange.bind (dette); this.handlePasswordChange = this.handlePasswordChange.bind (dette); this.updateProfile = this.updateProfile.bind (dette); this.getProfile = this.getProfile.bind (this); this.state = name: ", email:", passord: ", id:";
Definer en metode som kalles Oppdater profil
som vil bli kalt når brukeren klikker på Oppdater
knappen for å oppdatere brukerens detaljer. Inne i Oppdater profil
metode, gjør et POST-anrop til Oppdater profil
metode i app.js
filen sammen med den endrede Navn
og passord
. Her er hvordan Oppdater profil
metode i ShowProfile
komponent ser ut:
updateProfile () var self = this; axios.post ('/ updateProfile', navn: this.state.name, passord: this.state.password) .then (funksjon (svar) hvis (svar) hashHistory.push ('/') ) .catch (funksjon (feil) console.log ('feil er', feil););
Når et svar er mottatt fra POST-anropet, navigeres skjermen til bloggposten.
Inne i app.js
fil, opprett en metode som kalles Oppdater profil
som vil analysere innpassede parametere og ringe til MongoDB-databasen.
app.post ('/ updateProfile', funksjon (req, res) var navn = req.body.name; var passord = req.body.password; user.updateProfile (navn, passord, økter.brukernavn, funksjon res.send (resultat);))
Som vist i ovennevnte kode, når parametrene er analysert i Oppdater profil
metode i app.js
fil, den user.updateProfile
Metoden kalles med endret Navn
, passord
, og brukernavn
.
La oss definere user.updateProfile
metode inne i user.js
fil, som vil ringe til MongoDB
database og oppdatere Navn
og passord
basert på brukernavn
. Her er hvordan Oppdater profil
metode i user.js
fil ser ut:
UpdateOne ("email": brukernavn, $ sett: "navn": navn, "passord": passord, funksjon (feil, resultat) hvis (err == null) tilbakeringing (sann) annet tilbakeringing (falsk) ;;);
I ovennevnte kode oppdaterte du brukeropplysningene basert på e-postadressen ved hjelp av updateOne
metode.
Lagre endringene ovenfor og start serveren på nytt. Logg inn på søknaden og klikk på Profil link. Endre navn og passord og klikk på Oppdater knapp. Prøv å logge på, og du vil kunne logge inn ved å bruke det nye passordet.
I denne veiledningen implementerte du profilsiden for bloggprogrammet. Du lærte hvordan du henter detaljer fra en database og fyller den på siden ved å bruke React. Du har også implementert funksjonaliteten for å oppdatere profildetaljer.
Kildekode fra denne opplæringen er tilgjengelig på GitHub. Gi meg beskjed om dine tanker eller forslag i kommentarene nedenfor.