⊗jsrtPmFmsII 56 of 112 menu

Reactда инпутлар билан ишлаш

Reactда инпутлар билан ишлаш стейтлар ёрдамида амалга оширилади. Ҳар бир инпутга унинг value қийматини ўз ичига олган алохйда стейт белгиланади.

Келгила, мисолда кўрамиз. Бизда инпут бор дейлик:

function App() { return <div> <input /> </div>; }

Бундан ташқари бизда стейт ҳам бор дейлик:

function App() { const [value, setValue] = useState('text'); return <div> <input /> </div>; }

Келгила, инпутнинг value атрибутига бизнинг стейтни боглаймиз:

function App() { const [value, setValue] = useState('text'); return <div> <input value={value} /> </div>; }

Бундай ҳолда, стейт ўзгарганида, инпутнинг мати ҳам реактив равишда ўзгаради.

Бирок, бу қизиқ иккинчи даражали таъсир келтиради: энди браузерда кодни ишлатганда инпутдаги матни ўзгартириб бўлмайди! Нега: чунки инпутга мат киритганда value стейти ўзгармайди, шу sababli, инпутдаги мат ҳам ўзгармаслиги керак.

Ўзингиз синаб кўринг. Менинг кодимни нусхалаб ўзингизда ишланг. Инпутдаги матни ўзгартиришга уриниб кўринг - ҳеч нарса бўлмайди. Браузер консолини очинг - унда сиз Reactнинг огоҳлантиришини кўрасиз. Бу огоҳлантириш бизга стейтни инпутга боглаганимиз, аммо шу билан инпутни блоклаганлигимизни кўрсатади.

Келгила, бизнинг инпутимизга мат киритиш имкони бўлсин учун шундай қилайликки, киритish пайтида бизнинг стейтимиз инпутнинг жорий қийматига ўзгарсин.

Бошлаш учун инпутга onChange воқеасини боглаш керак:

function App() { const [value, setValue] = useState('text'); return <div> <input value={value} onChange={handleChange} /> </div>; }

Бу воқеа Reactда соф JSга нисбатан бошқача туради. Reactда у инпут ўзгарганида дарҳол ишга тушади. Яъни белги киритилганда ёки ўчирилганда.

Келгила, энди воқеа обработчигимизни қўшайлик:

function App() { const [value, setValue] = useState('text'); function handleChange() { } return <div> <input value={value} onChange={handleChange} /> </div>; }

Бу обработчикда биз инпутнинг жорий матини ўқишимиз ва уни setValue функциasi ёрдамида стейтга ўрнатишимиз керак.

Муаммо шундаки, бу функциaning this бизнинг инпутимизга ишора қилмайди - бу Reactнинг ўзига хос хусусияти. Элементни олиш учун, воқеа юз берган, биз event.target дан фойдаланишимиз керак:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { console.log(event.target); // инпут DOM элементга ишора } return <div> <input value={value} onChange={handleChange} /> </div>; }

event.target ёрдамида инпутнинг жорий матини чиқарайлик:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { console.log(event.target.value); // инпутнинг жорий мати } return <div> <input value={value} onChange={handleChange} /> </div>; }

Энди инпут матини бизнинг стейтимизга ёзайлик:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { setValue(event.target.value); } return <div> <input value={value} onChange={handleChange} /> </div>; }

Энди биз инпутга мат кирита оламиз. Бу пайтда value стейти ҳар доим инпутнинг жорий матини ўз ичига олади.

Биз бунга осонгина ишонч ҳосил қиламиз. Матнинг мундарижасини абзацга чиқарайлик. Бу ҳолда инпутга мат киритганда, киритилган мат автоматик равишда абзацда пайдо бўлади:

function App() { const [value, setValue] = useState(''); function handleChange(event) { setValue(event.target.value); } return <div> <input value={value} onChange={handleChange} /> <p>text: {value}</p> </div>; }

Биз уни номсиз стрелка функциasi билан анча қисқароқ қилиб ёза оламиз:

function App() { const [value, setValue] = useState(''); return <div> <input value={value} onChange={event => setValue(event.target.value)} /> <p>text: {value}</p> </div>; }

Шу тариқа, ҳар қандай инпут билан ишлаш учун бизга куйидагилар керак: ушбу инпут учун стейт яратиш, стейтни инпутнинг value атрибутига боглаш, инпутга onChange воқеасини боглаш, воқеа обработчигида инпут стейтини унинг матига ўзгартириш.

Бу амалиётлар ҳар бир инпут билан бажарилиши керак. Яъни, агар сизда иккита инпут бўлса, сизда иккита стейт ва onChange воқеаси учун иккита функция-обработчик бўлади.

Иккита инпут яратинг. Биринчи инпутнинг мати биринчи абзацда, иккинчи инпутнинг мати эса иккинчи абзацда чиқсин.

Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш