美文网首页
redux使用及理解

redux使用及理解

作者: Poppy11 | 来源:发表于2020-06-21 21:25 被阅读0次
Redux的特点

统一的状态管理,一个应用中只有一个仓库(store)
仓库中管理了一个状态树(statetree)
仓库不能直接修改,修改只能通过派发器(dispatch)派发一个动作(action)
更新state的逻辑封装到reducer中

Redux能做什么?

随着JavaScript单页应用开发日趋复杂,管理不断变化的state非常困难,Redux的出现就是为了解决state里的数据问题。在React中,数据在组件中是单向流动的,数据从一个方向父组件流向子组件(通过props),由于这个特征,两个非父子关系的组件(或者称作兄弟组件)之间的通信就比较麻烦

redux中各对象的说明
  • store
    store是一个数据仓库,一个应用中store是唯一的,它里面封装了state状态,当用户想访问state的时候,只能通过store.getState来取得state对象,而取得的对象是一个store的快照,这样就把store对象保护起来。

  • action
    action描述了一个更新state的动作,它是一个对象,其中type属性是必须有的,它指定了某动作和要修改的值:

{type: UPDATE_TITLE_COLOR, payload: 'green'}
  • actionCreator
    如果每次派发动作时都写上长长的action对象不是很方便,而actionCreator就是创建action对象的一个方法,调用这个方法就能返回一个action对象,用于简化代码。

  • dispatch
    dispatch是一个方法,它用于派发一个动作action,这是唯一的一个能够修改state的方法,它内部会调用reducer来调用不同的逻辑基于旧的state来更新出一个新的state。

  • reducer
    reducer是更新state的核心,它里面封装了更新state的逻辑,reducer由外界提供(封装业务逻辑,在createStore时传入),并传入旧state对象和action,将新值更新到旧的state对象上返回。

步骤

1、首先创建redux文件夹,文件夹包含action,reducer和store.js


image.png

2、store.js里面创建仓库,还有就是因为后期需要调试redux,去谷歌商店下载redux-devtools这个插件,并且在store.js里面进行配置,代码如下

import {createStore, applyMiddleware,compose} from 'redux'
import thunkMiddleware from 'redux-thunk'
import reducer from '../redux/reducer'

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = createStore(reducer, composeEnhancers(applyMiddleware(thunkMiddleware)))

export default store

3、将store引入给 index.js

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

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


3、首先使用dispatch触发action

 dispatch({
          type: 'INIT_USER',
          user: res.body
        })

4、因为只有reducer能改变状态,所以会根据接受的action.type来给state赋值

const init = {
  id: -1,
  name: 'admin',
  roles:[]
}


//编写reducer,实现更新state的具体逻辑
export default (state = init, action) => {
  switch (action.type) {
    case 'INIT_USER':
      return action.user
    default:
      return state
  }
}

5、然后将所有reducer引入index文件,并且创建容器,传入reducer

export default combineReducers({
  user,
})

相关文章

  • redux使用及理解

    Redux的特点 统一的状态管理,一个应用中只有一个仓库(store)仓库中管理了一个状态树(statetree)...

  • Redux理解及简单使用

    什么是Redux? Redux对于JavaScript应用而言是一个可预测状态的容器 Redux最主要是用作应用状...

  • 什么时候会用到Redux?

    1.为什么使用Redux? 2. Redux工作原理 3.什么时候使用Redux 使用场景: 4.简单理解redu...

  • React入门(七)Redux(二)

    本文内容 概述Redux原理 总结Redux使用 (一)概述Redux原理 个人理解Redux 里面由两部分组成s...

  • redux学习笔记

    目的 理解、使用redux 开发RN的前端部分 掌握一些js 一、Redux和React什么关系 Redux是什么...

  • redux-saga框架使用详解及Demo教程

    redux-saga框架使用详解及Demo教程 前面我们讲解过redux框架和dva框架的基本使用,因为dva框架...

  • 自己实现Redux

    自己实现Redux 不使用react,直接使用原生的html/js来写一个简易的的redux 基本的状态管理及数据...

  • Redux 实践

    为了更深刻理解redux,我们将使用一个简化的购物车项目来学习Redux。 组织Redux代码 首先,在src文件...

  • React Native Redux(一)-redux介绍

    前言:本文将着重梳理清 redux 使用中的各个关键词的概念,以加深对redux的理解本文地址项目地址 redux...

  • React-Redux 使用

    目前使用版本 建议先了解 Redux 的使用!Redux使用(纯Redux使用) React-Redux 是 Re...

网友评论

      本文标题:redux使用及理解

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