網(wǎng)站首頁 編程語言 正文
一、Mobx前端狀態(tài)管理框架 基礎(chǔ)概念?
1. 什么是Mobx
Mobx是一個(gè)簡單、可擴(kuò)展的狀態(tài)管理庫
2. 什么是狀態(tài)管理?
狀態(tài)管理就是將分布在各個(gè)組件、各個(gè)模塊中的狀態(tài)的變化,按照一定的規(guī)則,進(jìn)行統(tǒng)一的管理。
3. 為什么需要狀態(tài)管理?
隨著組件數(shù)量的增加、系統(tǒng)的結(jié)構(gòu)越來越復(fù)雜。各大前端框架(React、Vue)提供的單向數(shù)據(jù)流的運(yùn)轉(zhuǎn)方式,已經(jīng)不能滿足復(fù)雜系統(tǒng)的需求。
。跨層次組件的數(shù)據(jù)共享
。兄弟組件的數(shù)據(jù)共享
。數(shù)據(jù)狀態(tài)的所有變化無法方便追溯
狀態(tài)管理的一般思想(Flux)
Flux的核心思想就是數(shù)據(jù)和邏輯永遠(yuǎn)單向流動(dòng)。
Flux中的數(shù)據(jù)單向和React中的單向數(shù)據(jù)流有所不同,React中的單向數(shù)據(jù)流是指的組件間通信的數(shù)據(jù)流向只能是從父組件->子組件的這樣一種形式。而Flux思想中的單向數(shù)據(jù)流,指的是在應(yīng)用程序中,數(shù)據(jù)變化的過程和方向是單向的。
不難發(fā)現(xiàn),F(xiàn)lux其實(shí)是提供了一個(gè)數(shù)據(jù)中心化控制的方案。每個(gè)數(shù)據(jù)的變化都是在“動(dòng)作”中去觸發(fā)。Flux架構(gòu)的特點(diǎn)主要是組件內(nèi)部不包含狀態(tài),所有狀態(tài)放到Store中統(tǒng)一管理,通過監(jiān)聽Action來具體執(zhí)行操作,這樣的好處在于:
。視圖組件不包含狀態(tài),很純粹,只包含了渲染邏輯和觸發(fā) action 這兩個(gè)職責(zé)。
。通過Action即可方便追溯Store的所有變化
。由于是中心化的數(shù)據(jù)管理,也就不存在兄弟/跨層級(jí)組件數(shù)據(jù)共享問題
市面上也有很多基于Flux的實(shí)現(xiàn),如Redux,Vuex等。
有哪些常見的實(shí)現(xiàn)?
Redux
Mobx
Vuex
Context (React Hook)
二、mobx的用法
1. 安裝 mobx
npm install mobx -S
2. 安裝 mobx 與 react 關(guān)聯(lián)工具
npm install mobx-react -S
3. 安裝兩個(gè)插件,以支持 ES6 的 mobx 語法
npm install @babel/plugin-proposal-decorators -D
npm install @babel/plugin-proposal-class-properties -D
4. 在 package.json 中配置上述兩個(gè)插件
"babel": [
"plugins": [
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
],
[
"@babel/plugin-proposal-class-properties",
{
"loose": true
}
]
]
]
5. ESLint 配置
"eslintConfig": {
"parserOptions": {
"ecmaFeatures": {
"legacyDecorators": true
}
}
}
6. 相關(guān)語法
。@observable:定義 state
。@computed:定義一個(gè)方法,當(dāng)依賴的 state 發(fā)生改變時(shí),自動(dòng)重新計(jì)算,自動(dòng)地將最新的結(jié)果渲染至調(diào)用的地方
。@action:定義操作 state 的方法
7. 頁面結(jié)構(gòu)
封裝store下的index文件
homeStore.js封裝內(nèi)容:
home頁面封裝內(nèi)容
參考鏈接地址:
。https://blog.csdn.net/qq_44647809/article/details/123797408
。https://www.wddsss.com/main/displayArticle/350
。https://blog.csdn.net/weixin_43834567/article/details/118414211
原文鏈接:https://blog.csdn.net/baidu_41601299/article/details/128837526
相關(guān)推薦
- 2022-03-28 通過numba模塊給Python代碼提速的方法詳解_python
- 2022-07-01 python神經(jīng)網(wǎng)絡(luò)Batch?Normalization底層原理詳解_python
- 2022-12-10 Python對(duì)XML文件實(shí)現(xiàn)增刪改查操作_python
- 2022-11-13 Git如何恢復(fù)到之前版本_相關(guān)技巧
- 2022-05-10 一文帶你了解中Typescript中type與interface的區(qū)別
- 2022-06-12 Flask項(xiàng)目的部署的實(shí)現(xiàn)步驟_python
- 2022-09-01 Nginx?部署的虛擬主機(jī)使用?Let's?Encrypt?加密?https的方法_nginx
- 2021-11-08 C++繼承模式詳解_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支