Odoslať handler, Reagovať Axios: Účtovanie a Získať za rovnaké handler

0

Otázka

Snažím sa vytvoriť webovú aplikáciu, ktorá odovzdáva súbor a pripojené aktuálneho používateľa na súbor model ako cudzí kľúč. Z nejakého dôvodu si žiadosť sa otrel, ale to sa najprv získať potrebné informácie.

  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. konzoly sa vracia používateľa informácie, ale 2. konzoly vráti hodnotu null. Akákoľvek pomoc bude naozaj ocenia.

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

Najlepšiu odpoveď

1

Vaše then vyhlásenie po pôvodnej get končí na riadku 11 a zvyšok kódu je mimo tohto.

S asynchrónnym kód, kód mimo then blok sa bude pokračovať beží, zatiaľ čo ho čaká na odpoveď, takže this.state.creator nebude boli stanovené ešte. Potom sa vráti do kódu vnútri then blok raz sľub rieši.

Musíte presunúť všetky druhý blok kódu vo vnútri intial then blok, tak je to len vykonané raz odpoveď na pôvodnú get žiadosť sa vrátil:

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

V iných jazykoch

Táto stránka je v iných jazykoch

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