İşleyiciyi gönder, Axios: Post'a tepki ver ve aynı işleyiciye gir

0

Soru

Dosyayı yükleyen ve geçerli kullanıcıyı dosya modeline yabancı anahtar olarak ekleyen bir web uygulaması oluşturmaya çalışıyorum. Bazı nedenlerden dolayı get isteği siliniyor, ancak başlangıçta gerekli bilgileri alıyor.

  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. Konsol kullanıcı bilgilerini döndürüyor ancak 2. konsol null değerini döndürüyor. Herhangi bir yardım gerçekten takdir edilecektir.

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

En iyi cevabı

1

Senin then orijinalden sonra ifade get 11. satırda bitiyor ve kodunuzun geri kalanı bunun dışında.

Zaman uyumsuz kodla, kodun dışındaki kod then blok yanıt beklerken çalışmaya devam edecek, bu yüzden this.state.creator henüz ayarlanmamış olacak. Daha sonra içindeki koda geri dönecektir. then söz çözüldükten sonra engelleyin.

Tüm ikinci kod bloğunu intialin içine taşımanız gerekir then blok, sadece bu yüzden bir kez idam, orijinal bir cevaptır get istek geri döndü:

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

Diğer dillerde

Bu sayfa diğer dillerde

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