setState()
Bileşen durumundaki değişiklikleri sıralar ve React'e bu bileşenin ve alt bileşenlerinin güncellenmiş durumla yeniden oluşturulması gerektiğini söyler.
setState yöntemi eşzamansızdır ve aslına bakılırsa, bir söz vermez. Dolayısıyla, bir işlevi güncellemek veya çağırmak istediğimiz durumlarda, ikinci argüman olarak setState işlevinde işlev geri çağrı olarak adlandırılabilir. Örneğin, yukarıdaki durumunuzda, bir işlevi setState geri araması olarak çağırdınız.
setState(
{ name: "Michael" },
() => console.log(this.state)
);
Yukarıdaki kod, sınıf bileşeni için iyi çalışır, ancak işlevsel bileşen durumunda, setState yöntemini kullanamayız ve bu, aynı sonucu elde etmek için kullanım efekti kancasını kullanabiliriz.
Akla gelen bariz yöntem, ypu'nun useEffect ile kullanabileceği şu şekildedir:
const [state, setState] = useState({ name: "Michael" })
useEffect(() => {
console.log(state)
}, [state])
Ancak bu, ilk oluşturmada da tetiklenir, bu nedenle kodu aşağıdaki gibi değiştirebiliriz; burada ilk oluşturma olayını kontrol edebilir ve durum oluşturmadan kaçınabiliriz. Bu nedenle uygulama şu şekilde yapılabilir:
İlk oluşturmayı tanımlamak için buradaki kullanıcı kancasını kullanabiliriz.
UseRef Hook, fonksiyonel bileşenlerde değiştirilebilir değişkenler oluşturmamıza izin verir. DOM düğümlerine / React öğelerine erişmek ve yeniden oluşturmayı tetiklemeden değişken değişkenleri depolamak için kullanışlıdır.
const [state, setState] = useState({ name: "Michael" });
const firstTimeRender = useRef(true);
useEffect(() => {
if (!firstTimeRender.current) {
console.log(state);
}
}, [state])
useEffect(() => {
firstTimeRender.current = false
}, [])