dva中數(shù)據(jù)層插件dva-core的使用

介紹

dva 首先是一個(gè)基于 reduxredux-saga 的數(shù)據(jù)流方案,然后為了簡化開發(fā)體驗(yàn),dva 還額外內(nèi)置了 react-routerfetch,所以也可以理解為一個(gè)輕量級的應(yīng)用框架。

數(shù)據(jù)流向

用戶需要改變數(shù)據(jù)的時(shí)候,需要通過dispatch發(fā)起一個(gè)action,同步操作會(huì)直接通過Reducers改變State,如果是異步操作會(huì)先觸發(fā)Effects然后流向Reducers最終改變State。

特點(diǎn)

  • dva進(jìn)行了模塊的劃分,有了命名空間
  • 每一個(gè)模塊都有完整的結(jié)構(gòu),state、reducer、effect
  • effect是處理異步的部分,底層使用redux-sagas做異步流程的控制
  • 數(shù)據(jù)的修改都需要通過reducer

dva-core的使用

安裝

npm install dva-core

dva-core的配置

// dva.js dva-core配置文件
import { create } from "dva-core";
// 數(shù)據(jù)模塊的集合,返回的是數(shù)組
import models from "@/models";

// 編寫創(chuàng)建函數(shù)
function createApp(opts) {
    let app = create(opts);
    // 注冊model,必須每個(gè)都需要注冊
    models.forEach(model => {
        app.model(model);
    })
    // 啟動(dòng)應(yīng)用,必須在model注冊完成后,在store獲取之前
    app.start();
    // 獲取store
    const store = app._store;
    app.getStore = () => store;
    app.dispatch = store.dispatch;
    return app;
}

const dva = createApp({});
export default dva.getStore();

將store注入到項(xiàng)目中

  • 將store注入到項(xiàng)目中,需要使用react-redux插件進(jìn)行注入
// 入口文件
import React from 'react'
import {Provider} from 'react-redux'
import App from './app'

// 引入dva的配置文件,獲取store
import store from './dva.js'

const Index = () => {
    return (
        <Provider store={store}>
            <App/>
        </Provider>
    )
}

在組件中的使用

  • 使用react-redux中的connect,將store放入組件中
import React from 'react'
import {connect} from 'react-redux'

const Home = props => {
    const {login} = props;
    
    return <h1>{login.name}</h1>
}

export default connect(store => ({
    login: store.login // 把登錄模塊的store注入項(xiàng)目中
}))(Home)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • dva框架的使用詳解及Demo教程 在前段時(shí)間,我們也學(xué)習(xí)講解過Redux框架的基本使用,但是有很多同學(xué)在交流群里...
    何蒙其實(shí)很好閱讀 922評論 0 0
  • 學(xué)習(xí)筆記 原文地址:antDesignPro使用心得,快速開發(fā)必備。https://www.52pojie.cn/...
    kalshen閱讀 44,922評論 8 85
  • Dva 源碼解析 作者:楊光dva官網(wǎng)源碼解析 隱藏在 package.json 里的秘密 隨便哪個(gè) dva 的項(xiàng)...
    席小超閱讀 435評論 0 0
  • 一、Dva簡介 首先Dva是一個(gè)基于 redux 和 redux-saga 的數(shù)據(jù)流方案,然后為了簡化開發(fā)體驗(yàn),D...
    涼雨_ce28閱讀 540評論 0 1
  • title: dva的初識date: 2018-05-28 15:02:34tags: dva 內(nèi)心獨(dú)白 這段時(shí)間...
    Kris_lee閱讀 1,608評論 0 2

友情鏈接更多精彩內(nèi)容