v2.5.2
Giriş yap

Redux tool kit, a non serialize hatası !

mahmutxd05
141 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Selamlar herkese, form uygulaması yaptım. Kayıtolma ekranında girdiğim verileri aktif olarak bir state'te tutuyordum. Bunlar redux'a geçirdim vee <b>a non serialize</b> hatası almaya başladım. Program aslında sorunsuz çalışıyor submit işlemlerimde verilerde gözüküyor. Ama konsol kısmı çıldırmış.

Ben sorunu biraz da olsa bulduğumu düşünüyorum. dispatch ile ben input gönderiyorum; <b>action.payload = input</b> olmuş oluyor.

Ben inputu gönderip bunun ismini ve value değerini redux sayfasında alıyorum. Acaba hataya bu sebep oluyor olabilir mi?

    //PROJE SAYFASI
    
      const handleChange = (e) => {
    dispatch(changeValues(e.target));
    //e.target
  };
  
  
  // REDUX SAYFASI
  
  import { createSlice } from "@reduxjs/toolkit";

const initialState = {
  values: {
    name: "",
    lastname: "",
    birthday: "",
    email: "",
    password: "",
    repassword: "",
    gender: "1",
    phoneNumber: 5,
    uyelikSozlesmesi: true,
    kampanyaHaber: false,
  },
};

export const signUpSlice = createSlice({
  name: "signUp",
  initialState,
  reducers: {
    changeValues: (state, action) => {
      console.log(action.payload); // İNPUT GELİYOR
      if (action.payload.name === "phoneNumber") {
        state.values = {
          ...state.values,
          phoneNumber: normalizeInput(action.payload),
        };
      } else {
        state.values = {
          ...state.values,
          [action.payload.name]: action.payload.value,
        };
      }
    },
   
  },
});



export const {
  changeValues,
  changeValuesUyelikSozlesmesi,
  changeValuesKampanya,
} = signUpSlice.actions;

export default signUpSlice.reducer;

    
    
    
    
Cevap yaz
Cevaplar (2)
mahmutxd05
259 gün önce

Sorunu çözdüm, aynı hatayı alanların faydalanması için yazıyorum.

    const inputValue = e.target.value;
    const inputName = e.target.name;

    dispatch({inputName,inputValue});

Şeklinde gönderip. çekebiliyormuşum. Ben bunu dispatch({e.target.name, e.target.value}) olarak göndermeyi denedim başaramadım :D

herkese iyi çalışmalar...

tayfunerbilen
259 gün önce

bu bir sorun degil aslinda, serialize edebilecegi seyler edemeyecegi seyler var dogal olarak :D Mesela bazen fonksiyon tutmam gerekiyor, serialize edemeyecek ben de biliyorum ama onu etmesine de gerek yok zaten, ayarlarindan kapatabiliyorsun bu uyariyi.

ama senin olayina gelecek olursak dispatch({e.target.name, e.target.value}) kullanimi dogru bir kullanim degil, degisken adin ayni ise key: value yazmadan direk degisken adini kullanabilirsin ancak objenin icindeki bir property'e eriserek kullaninca bunun key'inin ne olacagini bilemiyor dogal olarak, o yuzden dedigin gibi isimlendirerek kullanabilirsin sadece :)

const inputValue = e.target.value;
const inputName = e.target.name;

dispatch({inputName,inputValue});

yerine soyle de kullanabilirdin bu arada:

dispatch({
    inputName: e.target.name,
    inputValue: e.target.value
});