Dva 的基本使用——計(jì)數(shù)器

前言: Dva 相比于 redux ,是非常的好用,不用過(guò)多的配置就能輕松上手,肯定是未來(lái)的大主流,但是現(xiàn)在可沒(méi)多少公司用它,為什么那?很簡(jiǎn)單因?yàn)?Dva 內(nèi)部集成了不少東西,例如:redux ,redux-saga 等等,我們無(wú)法指定它的版本,這是它現(xiàn)在不被大規(guī)模采用,甚至取代 redux 的根本原因。

現(xiàn)在我們來(lái)實(shí)現(xiàn)一個(gè)延時(shí)計(jì)數(shù)器:

一、文件目錄
文件目錄
  • main.js
// 引入react翻譯JS小語(yǔ)法
import React from "react";

// 引入dva
import Dva from "dva";
// 引入APP組件
import App from "./App";
//  dva的主要配置
import count from "./count";
// 創(chuàng)建應(yīng)用
const app = Dva();
// 注冊(cè) Model
app.model(count);
// 注冊(cè)視圖
app.router(()=><App/>);
// 啟動(dòng)應(yīng)用
app.start("#app");
  • App.js
import React, { Component } from 'react'
import {connect} from "dva";
// connect粘合劑,和dva通信
@connect(
    ({count})=>({
        a : count.a
    })
)
export default class App extends Component {
    render() {
        return (
            <div>
                <h1>{this.props.a}</h1>
                <button onClick = {()=>{
                    // dispatch命令必須的加命名空間再寫(xiě)命令
                    this.props.dispatch({"type":"count/ADD"})
                }}>我們趁風(fēng)使柁</button>
            </div>
        )
    }
}
  • count.js
export default {
    // namespace: 當(dāng)前 Model 的名稱。
    namespace : "count",
    // 數(shù)據(jù)存儲(chǔ)的地方
    state : {
        a : 200
    },
    //  Action 處理器,處理同步動(dòng)作
    reducers : {
        // 同步監(jiān)聽(tīng)
        ADD_(state,action){
            return {
                ...state,
                a : state.a + 19
            }
        }
    },
    //   Action 處理器,處理異步動(dòng)作
    effects : {
        *ADD(action,{put}){
            // 延遲一秒
            yield delay(1000);
            // 觸發(fā)同步的ADD_函數(shù)
            yield put({"type":"ADD_"});
        }
    }
}
// 自定義一個(gè)延遲器
const delay = (ms) =>new Promise(res=>setTimeout(res,ms));
運(yùn)行計(jì)數(shù)器
dva計(jì)數(shù)器.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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