美文网首页让前端飞前端开发
Redux进阶一:提取action

Redux进阶一:提取action

作者: 废柴码农 | 来源:发表于2019-05-10 14:50 被阅读0次
前提:正在看这篇文章的你请务必保证我的上一篇文章《Redux入门级别操作演示》https://www.jianshu.com/p/55a4862eccc1

已经看完,否则!你看不懂这篇文章....因为!这篇文章是建立上上一篇文章的基础上⬆️

上一篇文章只是简单的将通过redux实现功能,但是细心的伙伴发现nav.js和reducer.js中都会定义action对象,如果两个文件中由于书写错误不一致的话,就会出现问题,而且如果状态多的话,管理起来就会不方便,所以我们需要对action进行一下封装,这样,统一管理action
首先需要建立一个actionType.js专门存放action状态
actionType.js
export const ACTION_TITLE = 'action_title'
//...........假设有很多个action
下面需要建立一个actionCreators.js文件专门存放action对象,注:下面的写法是一个函数返回一个对象
actionCreators.js
import {ACTION_TITLE} from './actionTypes' //这款换成你自己的地址

export const getTitle =(title)=> ({
  type: ACTION_TITLE,
  title
})

这样的话,用到状态的地方也需要改变,用到状态的地方即是状态的发出者:nav.js

nav.js
import {getTitle} from './actionCreators'
  handleClick =({item,key})=> {
        //注释的是之前的代码
        // const action = {
        //     type: 'action_title',
        //     title: item.props.title
        // }
        const action = getTitle(item.props.title)  //这样的话就是传给对象一个参数
        store.dispatch(action)
        this.setState({
            currentKey:key  
        })
    }

同理reducer.js文件中action.type也必须变成定义的变量

reducer.js
import {ACTION_TITLE} from './actionTypes'
const defaultState = {
  titleValue: '首页',
}
//reducer 可以接受state但是不可以修改state 只有store才能改变
//纯函数值得是,制定固定的输入,就一定会有固定的输出,而且不会有任何副作用
export default (state = defaultState, action)=> {
  console.log('action',action);
  if(action.type === ACTION_TITLE){
    const newState = JSON.parse(JSON.stringify(state))
    newState.titleValue = action.title
    return newState
  }
  return state;
}

//必须返回的是函数
OK这就可以啦!

相关文章

  • Redux进阶一:提取action

    前提:正在看这篇文章的你请务必保证我的上一篇文章《Redux入门级别操作演示》https://www.jiansh...

  • react-native (四 - 下) : redux

    进阶(持续更新....) 上期是我们最基础的redux的使用方式,通过调用reducer执行action来最终修改...

  • redux-thunk作用

    redux-thunk 是一个比较流行的 redux 异步 action 中间件,比如 action 中有 ***...

  • redux 学习笔记

    redux的作用 Redux 主要分为三个部分 Action、Reducer、及 Store action act...

  • 使用redux-thunk 中间件实现ajax数据请求

    redux-thunk 是一个比较流行的 redux 异步 action 中间件,比如 action 中有 set...

  • 高级

    异步 Action 通过 redux-thunk ,在 action 中 dispatch action ,可以是...

  • redux 异步action

    redux 异步action yarn add redux-thunk 参考 Redux Thunk api请求demo

  • redux

    安装redux Redux的组成 Action-事件 Reducer Store 案例

  • 在create-react-app中集成redux

    安装 redux react-redux redux-thunk 项目目录如下 项目中添加store/action...

  • redux-thunk

    一、redux-thunk介绍redux-thunk用于处理异步action,同类型的有redux-saga 二、...

网友评论

    本文标题:Redux进阶一:提取action

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