v2.5.2
Giriş yap

Arama verilerini blur'dan koruyamıyorum

cantunc
395 defa görüntülendi

Bir arama motoru yaptım, motora en az 3 harf girince onunla ilgili diğer maddeler de gözüküyor. Ne zaman ki bu maddelerden birine tıkladığımızda bizi o sayfaya yönlendirmeli. Ancak eğer input odağını kaybederse bu maddeler de kaybolmalı. Klasik ekşisözlük arama motoru gibi düşünebilirsiniz.

Ben inputun odağını kontrol etmek için onFocus ve onBlur olaylarını kullandım. Ancak ilgili maddelere tıkladığımızda -bu maddeler alanı mutlak pozisyonda olduğundan- input odağını kaybettiği için maddeler kayboluyor. Bu sorunu nasıl aşabilirim? Kodlar (React):

odak kontrolü için gerekli gördüğüm state:

const [focused, setFocused] = useState(false)
JavaScript

Inputun jsx'i:

<input 
    className="search-input"
    type="text"
    placeholder="Karşılığını aratmak istediğiniz sözcüğü girin"
    onChange={e => setInputData(e.target.value)}
    onFocus={e => {
        setFocused(true)
    }}
    onBlur={e => setFocused(false)}
/>
JavaScript

İlgili maddelerin jsx'i:

<div 
    className="results"
    style={{
        display: `${(inputData.length >= 3 && focused) ? "block" : "none"}`
    }}
>
    {relatedWords.map(relatedWord => (
        <WordResult
            word={relatedWord}
            key={relatedWords.indexOf(relatedWord)} 
            />
        ))}
</div> 
JavaScript

Madde sayfasının css'i

width: 540px;
position: absolute;
top: 335px;
left: 475px;
CSS

Yardımlarınız için Teşekkürler

Cevap yaz
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Cevaplar (1)
devepdogukan
772 gün önce

focused diye bir state oluşturmana gerek yok.WordResult componentine tıklanınca yönlendirmeni yap ve setInputData ' ı null olarak güncelle.Mantık olarak şuan yazdığın kodlar çalışması gerek ama bütün kodları göremediğimiz için başka bir sorun olabilir