美文网首页
Action 创建函数 和 中间件

Action 创建函数 和 中间件

作者: Flowke | 来源:发表于2017-05-25 20:19 被阅读0次

Action 创建函数

编写

function increment(){
    return { type: 'INCREMENT' }
}

发起

store.dispatch( increment() )

如果不想每次都 store.dispatch 发起 action.

const increment = () => dispatch( increment() )

_使用 react-redux 将 action 创建函数绑定到 React 组件上时, bindActionCreators() 方法自动将多个 action 创建函数封装成可以直接调用的普通函数 _

意义

Action 创建函数更大的意义在于封装逻辑, 而不是创建 action 对象, 比如说可以在里面添加一些判断逻辑(只允许奇数相加等). 使用 action 创建函数封装逻辑是 react 与 redux 配合的最佳实践. 当所有逻辑被转移到 redux后, react 就只负责渲染界面, 并发起 action.

中间件会让 action 创建函数返回更多的格式( 函数 ), 增强 action 创建函数的功能, 并让它处理负责逻辑.

Redux Thunk 中间件

redux thunk 中间件可以让 action 创建函数先不返回 action 对象, 而是返回一个函数.

通过这个函数延迟 dispatch 或 某些情况下才 dispatch. 这个内部函数接受 store 的两个方法 dispatch 和 getState 作为参数.

function incrementIfOdd(){
  return ( dispatch, getState() ) => {
      const value = getState();
      if (value % 2 === 0){
          return;
      }
      dispatch( increment() );
  }
}

要使用, 先激活

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';

const store = createStore( counter, applyMiddleware( thunk ) );

function increment(){
    return { type: 'INCREMENT' }
}

function incrementIfOdd(){
  return ( dispatch, getState() ) => {
      const value = getState();
      if (value % 2 === 0){
          return;
      }
      dispatch( increment() );
  }
}

function incrementAsync(){
  return ( dispatch ) => {
     setTimeout( ()=>{
        dispatch( increment() ) ;
     } )
  }
}

// 发起action, 上面三个都是 action 创建函数

store.dispatch( increment() )
store.dispatch( incrementIfOdd() )
store.dispatch( incrementAsync() )

相关文章

  • Redux Thunk中间件

    Action创建函数就是创建action对象的函数,起初它只能返回action对象,但通过中间件的加工后,acti...

  • Action 创建函数 和 中间件

    Action 创建函数 编写 发起 store.dispatch( increment() ) 如果不想每次都 s...

  • 🌟🌟🌟🌟:redux中间件 redux thunk

    1:不使用中间件,store接收的action只能是对象;有了中间件,action可以是一个函数。2:store接...

  • react技术栈

    关于 Redux 中间件 Redux 的中间件是定义一个函数,对 dispatch 进行改造,在发出 action...

  • Redux进阶三:使用redux-saga使用入门

    上一篇文章介绍了redux-thunk中间件,redux-thunk中间件主要使action返回函数成为了可能,可...

  • redux中的Middleware

    1. 什么是middlewware 是dispatch分发action和action到达reducer的中间件 2...

  • redux中间件 ----thunk

    redux 中间件 为啥要用中间件: 通常情况下 action只是一个对象,不能包含异步操作,这导致了很多创建的a...

  • Redux常用方法

    action创建函数 combineReducers 合并多个reducer,返回一个对象 createStore...

  • express的初步使用

    引入express 创建服务 静态资源文件的处理 middleware中间件 中间件的本质就是一个函数. 执行任何...

  • Android原生文件分享

    创建分享 创建Intent并指定Action为Intent.ACTION_SEND。 指定需要发送的内容和类型。 ...

网友评论

      本文标题:Action 创建函数 和 中间件

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