美文网首页
实现自己的miniredux

实现自己的miniredux

作者: 西洲何在 | 来源:发表于2018-04-01 14:55 被阅读0次

前言

在reactjs的持续学习中,总有一些知识需要总结和复习深化,所以就产生了把学习的redux自己简单实现,主要参考了一些课程和一些文章

redux的简单使用

首先我们先看看redux的使用,看看实现那些功能
前提:已经安装好一个react工程,并已经运行成功,安装了redux插件

import { createStore } from 'ruedux'

// 创建reducer
function counter(state=0, action) {
  switch (action.type) {
    case '加一':
      return state +1
    case '减一':
      return state - 1
    default:
      return state
  }
}

// 创建store

let store = createStore(reducer)

// 订阅一个listener

function listener() {
  let sum = store.getState()
  console.log(`sum: ${sum}`)
}

store.subscribe(listener)

// 派发action

store.dispatch({type: '加一'})
store.dispatch({type: '加一'})
store.dispatch({type: '减一'})

从redux的使用可以看出,只有dispatch可以触发action,从而改变数据,可以使用subdescribe订阅一个listener,来监听数据的变化,从而获取到state变化后的数据,这样一个单入口单出口的我们自己该怎么实现呢?接下来我就简单的实现一下

实现自己的miniredux

首先在react工程的src目录里新建一个my-redux.js

// 创建一个出口函数createStore

export function createStore(reducer) {
  // 定义当前的状态
  let currentState
  // 定义当前的listener集合
  let currentListener

  // 唯一获得当前状态的方法
  function getState() {
    return currentState
  }

  // 把所有的listener push到currentListener
  function subscribe(listener) {
    currentListener.push(listener)
  }

  // 触发action,使得state改变状态,并执行所有的listener和返回一个action
  function dispatch(action) {
    currentState = reducer(currentState, action)
    currentListener.forEach(v => v())
    return action
  }

  // 初始化state,使得state获取原始的值
   dispatch({type: '@@redux-aaaaa'})

  // 返回所有方法
   return {getState, subscribe, dispatch}
}

这里我们已经简单的实现了redux的功能,如何使用?实际只要把import {createStore} from ‘redux’改为直接引用自己写的miniRedux即可

import { createStore } from './my-redux.js'

后面的使用和redux的使用一样

相关文章

  • 简单实现react-redux

    前言 在实现自己的miniredux中,我简单的做出了一个具备redux几个功能的miniredux,如果直接在r...

  • 实现自己的miniredux

    前言 在reactjs的持续学习中,总有一些知识需要总结和复习深化,所以就产生了把学习的redux自己简单实现,主...

  • miniRedux实现与源码解读

    本文主要介绍redux的react-redux的原理 redux原理 github地址:https://githu...

  • 自己的梦想自己实现

    每个人都有自己想要的东西,想要过的生活。比如:一座大房子,一辆不错的车,一笔不菲的存款,一个满意的工作等等。 所有...

  • 实现自己

    人一辈子都在寻找自己,怎么去寻找自己呢?“自我实现的预言”原来是指我们平时所说的话,可能会成为他自己的生命预言。”...

  • 实现自己的xrange

  • 实现自己的价值

    “从2013年开始,王菲老师就带着她的农村娃们开始了互联网学习探索之路。她的课堂在学校,也在网络上;她的学生来自全...

  • 实现自己的 KVC

    本文只是按照自己思路实现了 setValue:forKey: 和 setValue:forKeyPath: 这两个...

  • 实现自己的promise

    实现自己的promise 注意 then的声明阶段是把新返回的promise的resolve方法的引用提交上一个p...

  • 实现自己的价值

    和LD做的,是自己付出的。 付出和汇报,是相互的。 和LD付出的。自己的筹码。 提出自己的要求,去实现,达到自己的...

网友评论

      本文标题:实现自己的miniredux

      本文链接:https://www.haomeiwen.com/subject/kdiicftx.html