Дар Redux ду асосия идея
Пеш аз оғози омӯзиши китобхонаи Redux, биёед бо ду асосия идеяҳои он шинос шавем. Идеяи якум, ки ба идоракунии ҳолат дахл дорад, мо дар мисоли счётчики оддӣ дар стейти React меомӯзем:
function Counter() {
// State
const [count, setCount] = useState(0)
// Action:
function clickHandler() {
setCount(count + 1)
}
// View:
return (
<div>
<span>{count}</span>
<button onClick={clickHandler}>+</button>
</div>
)
}
Дар ин код мо стейт-ро барои тағйирёбандаи
count мебинем - ин
манбаи ҳақиқат барои счётчик аст. Баъд мо
амал (action)-ро мебинем - рӯйдод,
ки бо клики корбар даъват карда мешавад ва
навсозии стейт-ро ба вуҷуд меорад. Ва ниҳоят,
намоиш (view),
ки бо ёрии он мо
интерфейси корбарро чоп мекунем.
Пас, схема хеле сода аст:
тугма пахш карда мешавад - стейти count (State)
бо пахш кардан (Action) тағйир меёбад, аз ин рӯ
намоиш (View) тағйир меёбад - дар ҳолати мо
ин рақам дар экран аст.
Аммо, ҳама чиз мураккабтар хоҳад буд, агар мо бисёр компонентҳо дошта бошем, ки бояд як ҳамон стейт-ро истифода баранд. Метавон, албатта, масалан ҳолатро боло бардоштан то компонентҳои волидайн, аммо чунин ҳал ҳамеша наметавонад аз мушкилӣ наҷот диҳад. Redux дар ин ҳолат ба мо пешниҳод мекунад, ки як ҷо дар барнома сохта шавад, ки дорои ҳолати глобалӣ бошад ва намунаҳои муайяни рафтор дар замони навсозии ин ҳолат. Айнан дар ин идеяи асосии якум (!) ифода ёфтааст.
Идеяи дуюм бо иммутабельӣ вобаста аст, яъне бо тағйирнопазирии маълумот. Шумо, албатта, аз JavaScript ба хотир меоваред, ки массивҳо ва объектҳо метавонанд тағйир ёбанд. Тағйири маълумот бевосита дар Redux, ҳамчунон ки дар дигар фреймворкҳо ҳисоб карда мешавад, ҳаракати номатлуб аст ва метавонад ба оқибатҳои пешбининашаванда оварда расонад. Аз ин рӯ дар Redux объектҳо ва массивҳои аввалиями мо бояд иммутабелӣ-ро нигоҳ доранд, ва тағйир додан мо метавонем танҳо нусхаҳои онҳоро.
Дар бораи он сухан гӯед, ки идеяи якуми асиосии Redux дар чӣ ифода ёфтааст.
Дар бораи он сухан гӯед, ки идеяи дуюми асиосии Redux дар чӣ ифода ёфтааст.