Umi Dva:useStore useSelector useDispatch用法

最近項目需要用到了umi.js洲守,豐富的內(nèi)置功能對小白很友好,上手難度不大轰异。今天嘗試在自己寫的demo里加上dva岖沛,get一下connect新用法。

view和model的關(guān)系圖

image-20210204152603826.png

model主要有 namespace state reducers effects subscription5個主要屬性


//model.js 基本結(jié)構(gòu)
export const DemoModel = {
  nameSpace: 'demo', // 定義model名搭独,如果沒聲明婴削,會以文件作為namespace
  state:{}, 
  reducers:{ 
    // reducer 是 Action 處理器,用來處理同步操作牙肝,
    getList (state, { payload }) { // 第二個參數(shù)為 action = {type,payload} 
        //代碼操作
      return payload 
    }
    }唉俗,
  effects:{ 
    // Effect是一個 Generator 函數(shù)嗤朴,內(nèi)部使用 yield 關(guān)鍵字,標(biāo)識每一步的操作
    *getRemote ({ payload },{put, call}) {  
      // 這里每個函數(shù)都有兩個參數(shù)虫溜,(action,effect), effect = {put,call,select}
      // put 觸發(fā)一個action雹姊,類似于display
      // call 執(zhí)行異步函數(shù),比如請求 
      const data = yield call(getRemoteList)
      yield put({
        type: 'getList',
        payload: {"data":data} // 這里直接返回data會獲取不到數(shù)據(jù)衡楞,因此我用對象又包了一層
      })
    },
    *delUser ({ payload:{ id } },{put,call}) {
      const data = yield call(delUserData, { id })
      yield put({
         type: 'getRemote', 
         payload: {}
       })
    },
  },
  subscriptions:{
    setup({ dispatch, history }) {
      return history.listen(({ pathname }) => { // {pathname} = location
        if (pathname === '/') {
          dispatch({
            type: 'getRemote', // 監(jiān)聽到進入主頁吱雏,派發(fā)query事件
          })
        }
      });
    }
  }
}

使用 useSelector useDispatch ,來替代原先的connect,綁定 State 到 View 瘾境,

import { useSelector, useDispatch歧杏,useStore } from 'umi';

const Index = () => {
  // useSelector 通過getState()方法找到demo的data
    const state = useSelector(state => state.getState().demo.data) 
  // useStore:如果store中的state改變,這個將不會自動更新
  //const state = useStore(state.getState())
  const dispatch = useDispatch()
  
  const deleteHandler = async (id) => {
    dispatch({
      type:'users/delUser',  
      payload:{
        id
      }
    })
  };
  
  return()
}
export default Index

原先connect寫法

import { connect } from 'umi';

const Index = (props) => {
  const { users, dispatch } = props
    const state = users.users.data
  const deleteHandler = async (id) => {
    dispatch({
      type:'users/delUser',  
      payload:{
        id
      }
    })
  };
  
  return()
}

const stateToProps = ({users}) => {
   return {
    users
  }
}
export default connect(stateToProps)(Index);
// 或者
export default connect(({users}) => ({
  users
}))(UserTable);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末迷守,一起剝皮案震驚了整個濱河市犬绒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兑凿,老刑警劉巖凯力,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異礼华,居然都是意外死亡咐鹤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門圣絮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慷暂,“玉大人,你說我怎么就攤上這事晨雳。” “怎么了奸腺?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵餐禁,是天一觀的道長。 經(jīng)常有香客問我突照,道長帮非,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任讹蘑,我火速辦了婚禮末盔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘座慰。我一直安慰自己陨舱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布版仔。 她就那樣靜靜地躺著游盲,像睡著了一般误墓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上益缎,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天谜慌,我揣著相機與錄音,去河邊找鬼莺奔。 笑死欣范,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的令哟。 我是一名探鬼主播恼琼,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼励饵!你這毒婦竟也來了驳癌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤役听,失蹤者是張志新(化名)和其女友劉穎颓鲜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體典予,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡甜滨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘤袖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衣摩。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖捂敌,靈堂內(nèi)的尸體忽然破棺而出艾扮,到底是詐尸還是另有隱情,我是刑警寧澤占婉,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布泡嘴,位于F島的核電站,受9級特大地震影響逆济,放射性物質(zhì)發(fā)生泄漏酌予。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一奖慌、第九天 我趴在偏房一處隱蔽的房頂上張望抛虫。 院中可真熱鬧,春花似錦简僧、人聲如沸建椰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽广凸。三九已至阅茶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谅海,已是汗流浹背脸哀。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扭吁,地道東北人撞蜂。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像侥袜,于是被迫代替她去往敵國和親蝌诡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容