Obsługi wysyłania, Reagowanie na Axios: Podziel się i uzyskać ten sam procesor

0

Pytanie

Staram się stworzyć aplikację internetową, która ładuje plik i przywiązuje użytkownika do plików modelu jako klucza obcego. Z jakiegoś powodu żądanie get ściera, ale on początkowo otrzymuje niezbędne informacje.

  handleSubmit = (e) => {
    e.preventDefault();
    axios.get('http://127.0.0.1:8000/core/current_user/', {
      headers: {
        Authorization: `JWT ${localStorage.getItem('token')}`,
      }
    }).then((user) => {

      this.state.creator = user.data;
      console.log(this.state.creator);
    })  
    console.log(this.state.creator);
    let form_data = new FormData();
    form_data.append('creator', this.state.creator);
    form_data.append('file', this.state.file);
    form_data.append('title', this.state.title);
    form_data.append('description', this.state.description);
    axios.post('http://localhost:8000/core/posts/', form_data, {
      headers: {
        'Content-Type': 'multipart/form-data',
        Authorization: `JWT ${localStorage.getItem('token')}`,
      }
    }).then(res => {
        console.log(res.data);
      }).catch(err => console.log(err))
  };

1 - konsola zwraca informacje o użytkowniku, ale 2-konsola zwraca wartość null. Każda pomoc będzie bardzo wdzięczna.

api axios javascript react-native
2021-11-23 22:41:32
1

Najlepsza odpowiedź

1

Twój then oświadczenie po oryginału get kończy się w wierszu 11, a pozostała część twojego kodu znajduje się poza jej granicami.

Z asynchronicznym kodem kod poza then jednostka będzie kontynuować pracę, podczas gdy on czeka na odpowiedź, więc this.state.creator jeszcze nie ustalono. Następnie wróci do kodu wewnątrz then zablokuj, jak tylko obietnica zostanie wykonana.

Trzeba przenieść cały drugi blok kodu wewnątrz wewnętrznego then blok, więc jest on wykonywany tylko raz w odpowiedzi na oryginalny get zapytanie wrócił:

handleSubmit = (e) => {
  e.preventDefault();
  axios
    .get('http://127.0.0.1:8000/core/current_user/', {
      headers: {
        Authorization: `JWT ${localStorage.getItem('token')}`,
      },
    })
    .then((user) => {
      this.state.creator = user.data;
      console.log(this.state.creator);
      let form_data = new FormData();
      form_data.append('creator', this.state.creator);
      form_data.append('file', this.state.file);
      form_data.append('title', this.state.title);
      form_data.append('description', this.state.description);
      axios
        .post('http://localhost:8000/core/posts/', form_data, {
          headers: {
            'Content-Type': 'multipart/form-data',
            Authorization: `JWT ${localStorage.getItem('token')}`,
          },
        })
        .then((res) => {
          console.log(res.data);
        })
        .catch((err) => console.log(err));
    });
};
2021-11-24 00:46:59

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................