最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React狀態(tài)管理器Rematch的使用詳解

 更新時間:2022年09月08日 15:37:52   作者:Ethan01  
rematch是對redux的二次封裝,簡化了redux是使用,極大的提高了開發(fā)體驗,這篇文章主要介紹了React狀態(tài)管理器Rematch的使用,需要的朋友可以參考下

Rematch使用

1. Rematch介紹

Rematch是沒有樣板文件的Redux的最佳實踐,沒有action types、 action creators, 狀態(tài)轉(zhuǎn)換或thunks。

2. Rematch特性

Redux 是一個了不起的狀態(tài)管理工具,由良好的中間件生態(tài)系統(tǒng)和優(yōu)秀的開發(fā)工具支持。RematchRedux 為基礎(chǔ),減少樣板文件并強制執(zhí)行最佳實踐。

  • 小于 2kb 的大小
  • 無需配置
  • 減少 Redux 樣板
  • React 開發(fā)工具支持
  • 支持動態(tài)添加reducer
  • Typesctipt支持
  • 允許創(chuàng)建多個store
  • 支持React Native
  • 可通過插件擴展

3. 基本使用

以一個計數(shù)器(count)應(yīng)用為例子:

a. 定義模型(Model) Model集合了state、reducersasync actions,它是描述Redux store的一部分以及它是如何變化的,定義一個模型只需回答三個小問題:

- 如何初始化`state`? **state**
- 如何改變`state`? **reducers**
- 如何處理異步`actions`? **effect** with async/await
// ./models/countModel.js
export const count = {
  state: 0, // 初始化狀態(tài)
  reducers: {
    // reducers中使用純函數(shù)來處理狀態(tài)的變化
    increment(state, payload) {
      return state = payload
    },
  },
  effects: dispatch => ({
    // effects中使用非純函數(shù)處理狀態(tài)變化
    // 使用async/await處理異步的actions
    async incrementAsync(payload, rootState) {
      await new Promise(resolve => setTimeout(resolve, 1000))
      dispatch.count.increment(payload)
    }
  })
}
// ./models/index.js
import { count } from './count'

export const models = {
  count
}

b. 初始化store 使用init方法初始化store, init是構(gòu)建配置的Redux存儲所需的唯一方法。init的其他參數(shù)可以訪問api了解。

// store.js
import { init } from '@rematch/core'
import * as models from './models'
const store = init({models})
export default store

c. Dispatch actions 可以通過使用dispatch來改變你的store中的reducereffects,而不需要使用action typesaction creators; Dispatch可以直接被調(diào)用,也可以使用簡寫dispatch[model][action](payload)。

const { dispatch } = store
// state = { count: 0 }
// reducers
dispatch({ type: 'count/increment', payload: 1 }) // state = { count: 1 }
dispatch.count.increment(1) // state = { count: 2 }
// effects
dispatch({ type: 'count/incrementAsync', payload: 1 }) // 延時1秒后 state = { count: 3 }
dispatch.count.incrementAsync(1) // 延時1秒后 state = { count: 4 }

d. RematchRedux一起使用 Rematch可以和原生Redux集成一起使用,看下邊這個例子:

// App.js
import React from 'react'
import ReactDOM from 'react-dom'
import { Provider, connect } from 'react-redux'
import store from './store'

const Count = (props) => (
    <div>
        The count is {props.count}
        <button onClick={props.increment}>increment</button>
        <button onClick={props.incrementAsync}>incrementAsync</button>
    </div>
)
const mapState = (state) => ({
    count: state.count,
})

const mapDispatch = (dispatch) => ({
    increment: () => dispatch.count.increment(1),
    incrementAsync: () => dispatch.count.incrementAsync(1),
})

const CountContainer = connect(
    mapState,
    mapDispatch
)(Count)

ReactDOM.render(
    <Provider store={store}>
        <CountContainer />
    </Provider>,
    document.getElementById('root')
)

到此這篇關(guān)于React狀態(tài)管理器Rematch的使用的文章就介紹到這了,更多相關(guān)React狀態(tài)管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ReactNative實現(xiàn)弧形拖動條的代碼案例

    ReactNative實現(xiàn)弧形拖動條的代碼案例

    本文介紹了ReactNative實現(xiàn)弧形拖動條,本組件使用到了react-native-svg和PanResponder,結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • React從插槽、路由、redux的詳細(xì)過程

    React從插槽、路由、redux的詳細(xì)過程

    React需要自己開發(fā)支持插槽功能,原理:父組件組件中寫入的HTML,可以傳入子組件的props中,這篇文章主要介紹了React從插槽、路由、redux的詳細(xì)過程,需要的朋友可以參考下
    2022-10-10
  • 一文詳解如何使用React監(jiān)聽網(wǎng)絡(luò)狀態(tài)

    一文詳解如何使用React監(jiān)聽網(wǎng)絡(luò)狀態(tài)

    在現(xiàn)代Web應(yīng)用程序中,網(wǎng)絡(luò)連接是至關(guān)重要的,通過監(jiān)聽網(wǎng)絡(luò)狀態(tài),我們可以為用戶提供更好的體驗,例如在斷網(wǎng)時顯示有關(guān)網(wǎng)絡(luò)狀態(tài)的信息,本文將介紹如何使用React監(jiān)聽網(wǎng)絡(luò)狀態(tài)的變化,并提供相應(yīng)的代碼示例
    2023-06-06
  • React Native 使用Fetch發(fā)送網(wǎng)絡(luò)請求的示例代碼

    React Native 使用Fetch發(fā)送網(wǎng)絡(luò)請求的示例代碼

    本篇文章主要介紹了React Native 使用Fetch發(fā)送網(wǎng)絡(luò)請求的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • React前端開發(fā)createElement源碼解讀

    React前端開發(fā)createElement源碼解讀

    這篇文章主要為大家介紹了React前端開發(fā)createElement源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • React的組件協(xié)同使用實現(xiàn)方式

    React的組件協(xié)同使用實現(xiàn)方式

    這篇文章主要介紹了React的組件協(xié)同使用,文中給大家提到在React開發(fā)中,有哪些場景的組件協(xié)同?又如何去實現(xiàn)組件的協(xié)同使用呢?本文都給大家提到,感興趣的朋友跟隨小編一起看看吧
    2021-09-09
  • 基于React.js實現(xiàn)原生js拖拽效果引發(fā)的思考

    基于React.js實現(xiàn)原生js拖拽效果引發(fā)的思考

    這篇文章主要為大家詳細(xì)介紹了基于React.js實現(xiàn)原生js拖拽效果,繼而引發(fā)的一系列思考,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 淺談React原生APP更新

    淺談React原生APP更新

    當(dāng)一個APP在運行的時候, 開發(fā)者想要將自己的代碼更新到用戶的手機上時, 一般都有兩種方案, 一是熱更新, 二就是APP更新.熱更新暫且不說,這篇文章就講講 APP 如何更新。
    2021-06-06
  • React狀態(tài)提升案例介紹

    React狀態(tài)提升案例介紹

    這篇文章主要介紹了React狀態(tài)提升案例,所謂 狀態(tài)提升 就是將各個子組件的 公共state 提升到它們的父組件進行統(tǒng)一存儲、處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-04-04
  • React-native橋接Android原生開發(fā)詳解

    React-native橋接Android原生開發(fā)詳解

    本篇文章主要介紹了React-native橋接Android原生開發(fā)詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

大新县| 封丘县| 巴中市| 额敏县| 阿合奇县| 东光县| 慈利县| 岳西县| 社会| 遵义县| 胶南市| 平陆县| 桂林市| 四子王旗| 汝城县| 安西县| 塔河县| 达日县| 普兰店市| 双牌县| 县级市| 洛阳市| 叙永县| 盐亭县| 乌海市| 济源市| 临湘市| 乐昌市| 周宁县| 广饶县| 宣城市| 进贤县| 神池县| 屯门区| 乌鲁木齐县| 祁阳县| 北票市| 夏河县| 建水县| 茶陵县| 鞍山市|