React useEffect tetikleyicileri belirlerken hata çıkıyor

mahmutxd07

Decipat
Katılım
4 Kasım 2022
Mesajlar
1.091
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
1669658632228.png


1669658644092.png


Türkçe Meal'i:
React Hook UseEffect'te eksik bağımlılıklar var: 'navigate' ve 'setUser'. Bunları dahil edin veya bağımlılık dizisini kaldırın.

Neden böyle bir uyarı alıyorum? Uygulamanın çalışmasında Client kısmında hiçbir hata yok. Sadece VS Code terminalinde uyarıyı alıyorum. Ne yapabilirim?
 
useEffect icinde dependency olarak setUser ve navigate 'i de eklemelisin.
Bunun warning degil, error olmasi gerekiyor; ilerleyen versiyonlarda cozerler.
 
UseEffect icinde dependency olarak setUser ve Navigate'i de eklemelisin.
Bunun warning degil, error olmasi gerekiyor; ilerleyen versiyonlarda cozerler.

Nasıl yani username, setuser, navigate gibi mi?

Ama ben sadece userName var ve yok olarak ayarladım ona göre tetiklenmesini istiyorum.

Ve eklediğimde yeni uyarı alıyorum.

1669661223527.png


1669661197981.png
 
useEffect icinde dependency olarak setUser ve navigate 'i de eklemelisin.
Bunun warning degil, error olmasi gerekiyor; ilerleyen versiyonlarda cozerler.
Hocam uyarıyı ESLint veriyor, React değil. Hatalı değil ama böyle olursa stil yönergelerine daha uygun olur demek istiyor.

Nasıl yani username, setuser, navigate gibi mi?

Ama ben sadece userName var ve yok olarak ayarladım ona göre tetiklenmesini istiyorum.

Ve eklediğimde yeni uyarı alıyorum.

Eki Görüntüle 1587576

Eki Görüntüle 1587575
useCallback kullanman gerektiğini söylüyor.
JavaScript:
const setUser = useCallback((user) => {
    dispatch(
        setUserLoginDetails({
            name: user.displayName,
            email: user.email,
            photo: user.photoURL,
        });
    );
}, []);
 
Hocam uyarıyı ESLint veriyor, React değil. Hatalı değil ama böyle olursa stil yönergelerine daha uygun olur demek istiyor.

useCallback kullanman gerektiğini söylüyor.
JavaScript:
const setUser = useCallback((user) => {
 dispatch(
 setUserLoginDetails({
 name: user.displayName,
 email: user.email,
 photo: user.photoURL,
 });
 );
}, []);

Hocam peki bu kullanım Doğru mu? Şu an tüm hatalar gitti sağ olun. Ama Navigate ve setUser olması sanki hata yaratabilir gibi hissettim.

JavaScript:
 useEffect(() => {
 // BU NE İŞE YARIYOR TAM ANLAYAMADIM..
 auth.onAuthStateChanged(async (user) => {
 if (user) {
 setUser(user);
 navigate("/home");
 } else {
 navigate("/");
 }
 });
 }, [userName, navigate, setUser]);

Hocam alakasız tema nedir?
Atom one dark olması lazım.
 
Hocam peki bu kullanım Doğru mu? Şu an tüm hatalar gitti sağ olun. Ama Navigate ve setUser olması sanki hata yaratabilir gibi hissettim.

JavaScript:
 useEffect(() => {
 // BU NE İŞE YARIYOR TAM ANLAYAMADIM..
 auth.onAuthStateChanged(async (user) => {
 if (user) {
 setUser(user);
 navigate("/home");
 } else {
 navigate("/");
 }
 });
 }, [userName, navigate, setUser]);


Atom one dark olması lazım.
Bu kullanım daha doğrudur hocam.
 
Hocam uyarıyı ESLint veriyor, React değil. Hatalı değil ama böyle olursa stil yönergelerine daha uygun olur demek istiyor.

Evet, ben de diyorum ki Warning olmamali, Error olmali ve hatayi direkt react vermeli. Functional component implicit input almamali cunku. Buradaki "Functional component" sozunden kastim React'takiler degil, function paradigmasindaki component'lar. Pure function degil cunku yazilan.
 
Bu kullanım daha doğrudur hocam.

Bu arada yine hata aldım eski uyarı aldığım haline döndüm.

JavaScript:
const setUser = useCallback((user) => {
 dispatch(
 setUserLoginDetails({
 name: user.displayName,
 email: user.email,
 photo: user.photoURL,
 });
 );
}, []);

Bunu yapınca firebase kısmı hata veriyor.
 
Bu arada yine hata aldım eski uyarı aldığım haline döndüm.

JavaScript:
const setUser = useCallback((user) => {
 dispatch(
 setUserLoginDetails({
 name: user.displayName,
 email: user.email,
 photo: user.photoURL,
 });
 );
}, []);

Bunu yapınca firebase kısmı hata veriyor.
Ne hatası veriyor hocam? Böyle deneyebilirsiniz.
JavaScript:
const setUser = useCallback((user) => {
    dispatch(
        setUserLoginDetails({
            name: user.displayName,
            email: user.email,
             photo: user.photoURL,
         });
     );
}, [user]);
 

Geri
Yukarı