react下一代路由系統(tǒng)margaret

啥都不說族淮,先上傳送門:github地址

margaret

? margaret是react的下一代路由庫,基于社區(qū)反映react 的router痛點進行了新的設計七芭,本庫有2種模式胯府,第一種是不保存路由狀態(tài)的路由系統(tǒng)中姜,與react-router一致,第二種是能夠持久保持路由狀態(tài)的荔燎,react路由庫,可用于開發(fā)在切換頁面后销钝,再次切換回來時有咨,打開頁面依然保持之前操作過的狀態(tài)。

? 同時利用react hook打造了一款數據流處理庫蒸健,用法與redux思路一致座享,但更為簡化

? margaret是一款極為輕量的庫婉商,api也極少,數據流是基于hook的context特性進行開發(fā)渣叛,2種路由方式無縫切換丈秩,用戶的項目保持不變

用法

安裝:

npm install margaret
or
yarn add margaret

必要的配置:

  1. 必須在react入口處配置Provider
import {MgProvider} from "margaret";
import * as reducer from "./reducer";

//reducer就是用戶自己定義的reducer文件
<MgProvider reducer={reducer}>
     <App/>
</MgProvider>
  1. 自定義reducer文件reducer.js的編寫
export const count1 = (state = 1, action={}) => {

    switch (action.type) {
        case "ADD":
            return state + 1;
        case "JIAN":
            return state - 1;
        default:
            return state;
    }
}

export const count2 = (state = 3, action={}) => {
 
    switch (action.type) {
        case "ADD2":
            return state + 2;
        case "JIAN2":
            return state - 2;
        default:
            return state;
    }
}
  1. router文件的編寫
let baseRoutes = [{
    name: "home",
    path: "/",
    hide: true,
    component: Home,
}, {
    name: "page1",
    path: "/page1",
    component: Page1,
}, {
    name: "page2",
    path: "/page2",
    component: Page2,
},{
    name: "page5",
    path: "/page5",
    redirect:"/page5/page3",
    children: [{
        name: "page3",
        path: "/page3",
        component: Page3,
    }]
}]

export default function Index(prop) {

    const {dispatch, mgRouter} = mg()

    return (
        <KeepRouter data={baseRoutes}/>
        )
}

  1. 界面的調用
import React, {Fragment, useEffect, useState, useContext} from 'react';
import Page1 from "@page/page1"
import Page2 from "@page/page2"
import Page3 from "@page/page3"
import {history, Link,mg,Router} from "margaret"
export default function Index(prop) {
    const {count1, count2,dispatch, setKeepRouterData} = mg()

    const goTo = (url) => {
        history.push(url)
    }

    return (
        <Fragment>
            {count1}
            <button onClick={() => {
                dispatch({
                    type: "ADD"
                })
            }}>add
            </button>
            <button onClick={() => {
                dispatch({
                    type: "JIAN"
                })
            }}>subtraction
            </button>
            <br/>
            {count2}
            <button onClick={() => {
                dispatch({
                    type: "ADD2"
                })
            }}>add1
            </button>
            <button onClick={() => {
                dispatch({
                    type: "JIAN2"
                })
            }}>subtraction2
            </button>
            <br/>
            <Link to="/page5">link to page 5</Link>
            <a onClick={() => goTo("/page1")}>page1</a>
            <a onClick={() => goTo("/page2")}>page2</a>
            <a onClick={() => goTo("/page5/page3", {state: 11})}>page3</a>
        </Fragment>
    );
}

里面包含了數據流的使用以及路由的使用,如果只是想用數據流則不引入router即可淳衙,在需要用的頁面中用mg接收數據及dispatch函數蘑秽,詳細文檔請看:地址

License

margaret is MIT licensed.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市箫攀,隨后出現的幾起案子肠牲,更是在濱河造成了極大的恐慌,老刑警劉巖靴跛,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缀雳,死亡現場離奇詭異,居然都是意外死亡梢睛,警方通過查閱死者的電腦和手機肥印,發(fā)現死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扬绪,“玉大人竖独,你說我怎么就攤上這事〖放#” “怎么了莹痢?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長墓赴。 經常有香客問我竞膳,道長,這世上最難降的妖魔是什么诫硕? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任坦辟,我火速辦了婚禮,結果婚禮上章办,老公的妹妹穿的比我還像新娘锉走。我一直安慰自己,他們只是感情好藕届,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布挪蹭。 她就那樣靜靜地躺著,像睡著了一般休偶。 火紅的嫁衣襯著肌膚如雪梁厉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天踏兜,我揣著相機與錄音词顾,去河邊找鬼八秃。 笑死,一個胖子當著我的面吹牛肉盹,可吹牛的內容都是我干的昔驱。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼垮媒,長吁一口氣:“原來是場噩夢啊……” “哼舍悯!你這毒婦竟也來了?” 一聲冷哼從身側響起睡雇,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤萌衬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后它抱,有當地人在樹林里發(fā)現了一具尸體秕豫,經...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年观蓄,在試婚紗的時候發(fā)現自己被綠了混移。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡侮穿,死狀恐怖歌径,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情亲茅,我是刑警寧澤回铛,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站克锣,受9級特大地震影響茵肃,放射性物質發(fā)生泄漏。R本人自食惡果不足惜袭祟,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一验残、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巾乳,春花似錦您没、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辑舷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間槽片,已是汗流浹背何缓。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工肢础, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碌廓。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓传轰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谷婆。 傳聞我的和親對象是個殘疾皇子慨蛙,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349