Створыце інтэрфейс пошуку на React з чыстым адміністраванням стану
Створыце інтерфейс пошуку на React, дзе заходы, выведзеныя значэнні, трымкі запыткаў і адображэнне дакументацыі застаюцца аддзельнымі, каб адпаведныя адказы паспакоўвалі запытку.
Бэкенд для абсарагу можа знаходзіць правыя дакументы, але ўсё раве ствараць заплутаныя умовы для корыстувальніка. Памедзліва адпаведь на пачатковы запит можа заменіць новейшы рэзультат. Колькасць фільтраў можа не саступацца з паведамленням у лісте. Панель інфармацыі можа паказваць цитаты з пярэдней адпаведзі.
Гэтыя проблемы часта вырастаюць з-за нечысткага апісання абавесцяў: калькі дадзеных прадставляюць адно і тое ж факт, альбо наследкі можу супярэчыць падзеі, яюя вже обработала інтэрфейс.
Для прыкладу, у застосоўцы на базе React, спачатку трэба вярнуцца да таго, што значыць кожны параметр і якія дзеянні магуць яго зменіць.
Раздзеліце вхідныя даны ад запита, які быў наданы
Тэкст, які зараз знаходзіцца ў поле абсарагу, і запит, які асоцыяўаны з паказанай адпаведзю, — гэта разныя рэчы. Корыстувальнік можа правергнуць вхідныя даны, чытаючы пярэдні рэзультат.
Явна парадоксаванне гэтага разліку. Зберагачыце праектны вхід, ідэнтыфікатор адправленага запиту чыя-то просьбы, а таксама статус рэзультата. Рэзультат павінен застацца з тым запитам, на які ён адпавядае.
Для пошуку, які запускаецца праз адправку, працоўнік обробкі адправкі вялікі ўжо знае, што быў адправлены запит на пошук. Ён можа безпасебна вызваць адпаведную операцыю. Установка булевага значэння толькі для таго, каб якісь эфект гэта зазнаў, дагаходзіць да ўтварэння яшчо адной пераходу, неяснаючы працэс выконання.
У режыме жывога пошуку є іншая патрабованне: рэзультаты трэба стежыць за эвалюючым запитам. Шар запитоў чы эфект з назначаным тэрміном жыцця можа кераваць гэтым сінхронізаваннем. Спачатку выберыце поведэнне, а пасля — межы рэалізацыі.
Адналажванне значэнняў, якія не патрабуюць незалежнага зберагачэння
Якщо колькасць рэзультатаў вылучаецца з видавальнага масіву, яе трэба вылічыць з гэтага масіву. Зберагачыце як сам масіў, так і окрема апдэйтаваная колькасць — гэта стварае два значэння, якія можу не збігацца.
То ж самае стосуецца атрыбутаў, якія ствараюцца на адной з сэрверных станоў і пры простам фільтраванні на боку кліента. Эфект, калі адна значэння React копіюецца ў іншае, часта ўскладнівае розумэнне таго, чы не трэба яго заместыць вычысленым значэнням.
Гэта не значыць, што весь локальны стан є зайвым. Можна намеравана стварыць версію дакумента, якая разлічыцца з данымі сэрвера. Галоўнае — це визначыць, калі новае значэння з сэрвера можа заместыць роботу корыстніка.
Назначыце чысткага адпаведальнага за асінхронную роботу
Разглядзім два запрошэння. Запрошэнне А пачынаецца перша, запрошэнне Б — вось другая, і Б завершаецца раней. Якщо пазней А без умов заместыць рэзультат, на экране будзе паказана адпаведнасць да неправильнага запрошэння.
Свяжыце рэзультаты з ідэнтыфікаторамі запитоў. Толькі актыўны запит можа заменіць актыўны рэзультат. Анулюйце застарелыя задачы, калі транспорт падтрымае анулюванне, і ўсё ж урахавайце можлівасць завершэння пакульшых задач.
Слою запытоў можна забезпечыць гэтыя функціі, або спецыяльны кантролер запытоў можа іх рэалізаваць. Компонент должен выкарыстоўваць чытальны статус, такі як «вольны», «завантажэнне», «успех» або «памылка», замест таго, каб координаваць ланцюг эфектаў, чыяя залежнасці прыводзяць да наступнага крока.
Падпісы, таймеры і слухачы браузера яшчэ трэбуюць чысткі па ціклу жыцця. Спрыймайце эфект як власнасць зовнішняга процесу сінхронізацыі, з налашчэнням і чысткай, якія маюць сэнс разам.
Зберагаеце доказы пры яго адпаведзі
Працэўнік должен аддаць адказ і ўсе справакі пра його выкананне як адну адпаведнасць да паданага запиту. Калі змянюецца актыўны рэзультат, іх неабходна адразу ж апডейтуваць.
Корыстныя справакі пра выкананне включаюць стабільны ідэнтыфікатор выканаўца і месцаположэнне фрагмента тэксту. процес выканання з урахоўваннем якасці выканаўца поясняе, чаму сама тэльць недастатня. Якшо прыстройка падтрымлівае аператывны прэвю доказаў, неабходна зберагчы зв’язак між кожным праказаным тверджэнням і фрагментам тэксту, які служыць падтрымкай для яго.
Павінна быць розмежована порожняя рэзультатная ліста з незаданым запитам і неудачным запросам. Гэтыя станы вялікія за сабой разныя наступныя крокі для чытача, хоця ў іншых случаях усе тры моглі б даць порожняю лісту.
Тэставаць взаімадзеянне за неканэйснага часу
Шырэй за час здарожыце два запитанні, а першы запит — медленей. Можна змяніць фільтры, калі запит ўжо актыўны. Знікніце з інтерфейсу пры яго завершэнні. Прабавайце знова пасля аднойчы буліць прычынай канфлікту. Пераканаецеся, што адказ, пазначка запиту і панель вучоркі застаюцца адпаведнымі.
Этыя сцэнарыі распрастароўваюць ацэнку RAG на сам інтерфейс. Якосьць доказаў мае значэнне толькі тады, калі корыстувач бачыць доказы, якія адносуюцца да адказа, які ён насправды запрашваў.