React ile state içinde veri olup olmadığı kontrolü nasıl yapılır?

249873

Kilopat
Katılım
17 Şubat 2019
Mesajlar
5.050
Çözümler
20
Son zamanlarda çok fazla bu hata ile karşılaşıyorum geçici çözümler ile def edebiliyorum. Ama size de sormak istedim.

Useeffect içerisinde API'dan data çekip bunu setstate ile işliyorum.

HTML kısmına geldiğimde ise örnk, "state? Data. Name" demeden bu çalışmıyor. "state. Data. Name" dediğimde useeffect önce çalışıp data yok diyor.


Bazı hata durumlarında ise bu sorgulama işlemi çok zor oluyor. Value içerisinde soru işareti koyduğum için programım çalışıyor. Ancak konsolda hata almaya devam ediyorum.
HTML:
 <form
 onSubmit={(e) => {
 e.preventDefault();
 onClick(e);
 }}
 >
 <label htmlFor="img">İmage URL:</label>
 <input
 type="text"
 id="img"
 value={editMovie?.img}
 onChange={(e) => {
 changeData(e);
 }}
 />
 <label htmlFor="title">Title:</label>
 <input
 type="text"
 id="title"
 value={editMovie?.title}
 onChange={(e) => changeData(e)}
 />
 <label htmlFor="overview">Overview:</label>
 <textarea
 id="overview"
 value={editMovie?.overview}
 onChange={(e) => changeData(e)}
 />
 <label htmlFor="raiting">Raiting:</label>
 <input
 type="number"
 id="raiting"
 value={editMovie?.raiting}
 onChange={(e) => changeData(e)}
 />
 <div>
 <input type="submit" value={"Dönder"} />
 <input type="reset" value={"Sil"} />
 </div>
 </form>



@oynozan
 
Son düzenleyen: Moderatör:
Hatada bahsedilen şey (aslında hata değil uyarı) input içerisindeki value'nin undefined iken defined olması. Soru işareti koyduğunuzda hata yerine undefined döndürür. Onun yerine şunu deneyin:

<input type="number" id="raiting" value={editMovie?.raiting || ""} onChange={(e) => changeData(e)} />
 

Sorunu çözdüm teşekkürler.

Saçma gelebilir ama ben state oluştururken içine bir şey yazmadım. Çünkü veriyi useEffectten çekiyorum. İçi boş bıraktığımda Value kısmı sorun çıkartıyormuş. İçine boş text bile olsa girmem gerekiyormuş.
 
Evet içini boş bırakmayın, denemedim ama undefined veya null döndürür büyük ihtimal.
 
Evet içini boş bırakmayın, denemedim ama undefined veya null döndürür büyük ihtimal.

Aslında genel olarak kullanımlarda hiç sorun yaşamıyordum. Ama form inputunda Value değeri girdiğimde uygulama delirdi. Yine de çok sağolun hocam.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…