Redux tool kit, a non serialize hatası !
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;
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
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...
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
});