React状态管理器Rematch的使用详解

 更新时间:2022年09月08日 15:37:52   作者:Ethan01  
rematch是对redux的二次封装,简化了redux是使用,极大的提高了开发体验,这篇文章主要介绍了React状态管理器Rematch的使用,需要的朋友可以参考下

Rematch使用

1. Rematch介绍

Rematch是没有样板文件的Redux的最佳实践,没有action typesaction creators, 状态转换或thunks

2. Rematch特性

Redux 是一个了不起的状态管理工具,由良好的中间件生态系统和优秀的开发工具支持。RematchRedux 为基础,减少样板文件并强制执行最佳实践。

  • 小于 2kb 的大小
  • 无需配置
  • 减少 Redux 样板
  • React 开发工具支持
  • 支持动态添加reducer
  • Typesctipt支持
  • 允许创建多个store
  • 支持React Native
  • 可通过插件扩展

3. 基本使用

以一个计数器(count)应用为例子:

a. 定义模型(Model) Model集合了statereducersasync actions,它是描述Redux store的一部分以及它是如何变化的,定义一个模型只需回答三个小问题:

- 如何初始化`state`? **state**
- 如何改变`state`? **reducers**
- 如何处理异步`actions`? **effect** with async/await
// ./models/countModel.js
export const count = {
  state: 0, // 初始化状态
  reducers: {
    // reducers中使用纯函数来处理状态的变化
    increment(state, payload) {
      return state = payload
    },
  },
  effects: dispatch => ({
    // effects中使用非纯函数处理状态变化
    // 使用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是构建配置的Redux存储所需的唯一方法。init的其他参数可以访问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可以直接被调用,也可以使用简写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')
)

到此这篇关于React状态管理器Rematch的使用的文章就介绍到这了,更多相关React状态管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ReactNative实现弧形拖动条的代码案例

    ReactNative实现弧形拖动条的代码案例

    本文介绍了ReactNative实现弧形拖动条,本组件使用到了react-native-svg和PanResponder,结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • React从插槽、路由、redux的详细过程

    React从插槽、路由、redux的详细过程

    React需要自己开发支持插槽功能,原理:父组件组件中写入的HTML,可以传入子组件的props中,这篇文章主要介绍了React从插槽、路由、redux的详细过程,需要的朋友可以参考下
    2022-10-10
  • 一文详解如何使用React监听网络状态

    一文详解如何使用React监听网络状态

    在现代Web应用程序中,网络连接是至关重要的,通过监听网络状态,我们可以为用户提供更好的体验,例如在断网时显示有关网络状态的信息,本文将介绍如何使用React监听网络状态的变化,并提供相应的代码示例
    2023-06-06
  • React Native 使用Fetch发送网络请求的示例代码

    React Native 使用Fetch发送网络请求的示例代码

    本篇文章主要介绍了React Native 使用Fetch发送网络请求的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • React前端开发createElement源码解读

    React前端开发createElement源码解读

    这篇文章主要为大家介绍了React前端开发createElement源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • React的组件协同使用实现方式

    React的组件协同使用实现方式

    这篇文章主要介绍了React的组件协同使用,文中给大家提到在React开发中,有哪些场景的组件协同?又如何去实现组件的协同使用呢?本文都给大家提到,感兴趣的朋友跟随小编一起看看吧
    2021-09-09
  • 基于React.js实现原生js拖拽效果引发的思考

    基于React.js实现原生js拖拽效果引发的思考

    这篇文章主要为大家详细介绍了基于React.js实现原生js拖拽效果,继而引发的一系列思考,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 浅谈React原生APP更新

    浅谈React原生APP更新

    当一个APP在运行的时候, 开发者想要将自己的代码更新到用户的手机上时, 一般都有两种方案, 一是热更新, 二就是APP更新.热更新暂且不说,这篇文章就讲讲 APP 如何更新。
    2021-06-06
  • React状态提升案例介绍

    React状态提升案例介绍

    这篇文章主要介绍了React状态提升案例,所谓 状态提升 就是将各个子组件的 公共state 提升到它们的父组件进行统一存储、处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • React-native桥接Android原生开发详解

    React-native桥接Android原生开发详解

    本篇文章主要介绍了React-native桥接Android原生开发详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01

最新评论