Saya mengalami masalah di mana saya tidak mendapatkan data kembali di action.payload.data saat menggunakan metode posting axios.

Di halaman Daftar, saya melakukan tindakan saat mengirimkan formulir

  onSubmit(props) {
    this.props.signUpUser(props)
      .then(() => {
      this.context.router.push('/');
      });
  }

Dalam file tindakan

export function signUpUser(props) {
    console.log("props", props);
    const request = axios({
        url: 'http://localhost:3000/api/users',
        method: 'post',
        data: props
    })

Ketika saya console.log alat peraga itu menunjukkan

 props Object {username: "11", email: "1", password: "1", passwordConfirmation: "1"}

Tetapi ketika saya konsol mencatatnya di peredam. Saya mendapatkan data di dalam object.config.adapter bukan object.data.

export default function(state = INITIAL_STATE, action) {
    switch(action.type) {
        case SIGN_UP_USER:
            console.log(action.payload);
            return action.payload.data;
        default:
            return state;
    }
}

enter image description here

Saya dapat melihat bahwa data berjalan dengan baik ketika saya memeriksa database saya tetapi tidak yakin mengapa saya mendapatkan array kosong ketika saya memanggil payload.data. Tujuan saya adalah untuk menyimpan informasi pengguna terdaftar ke peredam jadi saya menampilkan informasi mereka setelah mereka mendaftar.

0
Yh1234 14 Maret 2017, 00:24

2 jawaban

Jawaban Terbaik

Apakah Anda yakin bahwa API Anda mengembalikan data apa pun? Bagi saya sepertinya kode Anda berfungsi seperti yang diharapkan, tetapi API Anda tidak mengembalikan data apa pun. Saya tidak berpikir ini adalah masalah reaksi/redux.

Objek data yang Anda maksud, {username: "11", email: "1", password: "1", passwordConfirmation: "1"} adalah data yang ada di body pada postingan KE API.

Anda harus melihat pengontrol API/pengguna Anda untuk melihat mengapa ia tidak mengembalikan data sebagai tanggapannya.

1
Yo Wakita 13 Maret 2017, 22:10

Di mana Anda mengirim tindakan?

Ubah janjimu

.then((data) => {
      dispatch({type:'SIGN_UP_USER', payload:data})//you have to pass dispatch to the function call
      this.context.router.push('/');
      });
  }

Anda harus menetapkannya sebagai nilai properti.

Mencoba

return Object.assign(state, {data:action.payload.data})

Atau dengan sintaks es6

return { ...state, data:action.payload.data }
0
KornholioBeavis 13 Maret 2017, 21:49