• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

React - fetch Post

0 głosów
401 wizyt
pytanie zadane 8 kwietnia 2018 w JavaScript przez lastavenger Obywatel (1,060 p.)

Witam

zaczynam zabawe w react.js native ale mam aktualnie problem z dodaniem obiektu do jsona za pomocą fetch() POST oraz dodaniem do istniejącego state'a. Consol.log zwraca pożądany obiekt, ale co dalej by go dodać na stałe i wyświetlić. Pozdrawiam

addSingleUser = (e) => {
    e.preventDefault();
    const users = Object.assign([], this.state.contacts);
    
    let name = this.firstNameInp.value;
    let email = this.emailInp.value;
    let url = 'https://jsonplaceholder.typicode.com/users';
      
    fetch(url, {
      method:'POST',
      headers: {
        'Accept': 'application/json, text/plain, */*',
        'Content-type':'application/json'
      },
      body:JSON.stringify({name:name, email:email})
    })
        .then(resp => resp.json())
        .then(data => console.log(data))
  }

 

2 odpowiedzi

+1 głos
odpowiedź 8 kwietnia 2018 przez pietrzakacper Mądrala (7,480 p.)

To czego potrzebujesz to "state". Możesz skorzystać ze state'a Reactowego. Poczytaj dokumentacje , następnie możesz zmienić stan w kolejnym bloku .then : 

.then((data) => this.setState({data}))

Przy większych aplikacjach sam state Reactowy nie wystarcza, wtedy warto zainteresować się Redux, polecam darmowy kurs od twórcy tej biblioteki.

1
komentarz 9 kwietnia 2018 przez Jacek Rojek Bywalec (2,380 p.)

Racja, przy czym operowanie asynchronicznymi operacjami w trakcie życia komponentu (component lifecycle) nie jest najlepszym pomysłem. radził bym tego unikać.

Do zarządzania  asynchronicznymi zdarzeniami służy middleware jak np redux-observable jeśli wybierasz Redux.

Komponenty powinny być pisane jako pure functins/stateless. 

0 głosów
odpowiedź 8 kwietnia 2018 przez Jacek Rojek Bywalec (2,380 p.)
1. po co ci ten kod?

`const users = Object.assign([], this.state.contacts);`

2. {name:name, email:email} to możesz zapisać jako { name, email }

3. Co do zmiany stanu aplikacji to masz kilka opcji jak na przyklad: Redux lub Flux.
1
komentarz 8 kwietnia 2018 przez pietrzakacper Mądrala (7,480 p.)

Jak już komentujemy styl pisania kodu kolegi to dodałbym jeszcze:

1. Zawsze używaj constów, let'y wprowadzaj tylko jak zmienna będzie faktycznie zmieniała swoją wartość.

2. linijka z users faktycznie jest nigdzie nie używana, ale na przyszłość, tablicę możesz skopiować w krótszy sposób:

const arrCopy = [...arr] //spread operator
const anotherArrCopy = arr.slice()

3. Kod robiący zapytania warto jest wynieść do osobnego pliku, dla porządku :)

Podobne pytania

+1 głos
1 odpowiedź 557 wizyt
pytanie zadane 2 kwietnia 2021 w JavaScript przez Oskar Szkurłat Bywalec (2,780 p.)
0 głosów
1 odpowiedź 594 wizyt
pytanie zadane 25 września 2019 w JavaScript przez Mariusz Podgórski Początkujący (400 p.)
0 głosów
1 odpowiedź 563 wizyt
pytanie zadane 9 października 2018 w JavaScript przez Votex Początkujący (310 p.)

93,604 zapytań

142,529 odpowiedzi

322,997 komentarzy

63,092 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...