(3)昨天学了redux,今天以登录案例再打了一遍,笔记做好,先来张图

(2)布局配置:actions文件夹负责所有的action.js,reducers文件夹负责所有的reducer.js

(3)定义一个contant.js,该模块是用于定义action对象中type类型的常量值

(4) 在actions里面定义专门为Login组件生成action对象:目的只有一个,便于管理的同时防止程序员单词写错

import {USER_TOKEN} from '../contant'

//同步action

export const user=(userInfo)=>({type:USER_TOKEN,data:userInfo})

异步action,留作参考

(5)在reducers文件夹下定期reducer:该文件是用于创建一个为组件服务的reducer,reducer本质就是一个函数;

import { USER_TOKEN } from '../contant' //引入作为常量的,后期便于修改

const initState = {}//初始化状态

export default function loginReducer(previouseState=initState, action) {

const { type, data } = action

switch(type){

case USER_TOKEN:

return data

default:

return initState

}

}

(6)在redux文件夹下定义index.js:该文件用于汇总所有的reducer为一个总的reducer

//引入为login服务的reducer

import login from './reducers/login'

//combineReducers合并所有reducer变为一个总的reducer,为对象

import {combineReducers } from 'redux'

export default combineReducers({

login

})

(7) redux文件夹下定义store:该文件专门用于暴露一个store对象,整个应用只要一个store对象

//npm install redux-thunk --save 安装

//引入redux-thunk,用于支持异步action

import thunk from 'redux-thunk'

//引入createStore,专门用于创建redux中最为核心的store对象

import { createStore,applyMiddleware } from 'redux'//applyMiddleware执行中间介

//引入汇总之后的reducer

import  allReducer from  './index'

暴露applyMiddleware(thunk),applyMiddlewares调用实例:返回store对象

export default createStore(allReducer,applyMiddleware(thunk))

//applyMiddlewares的作用:它是 Redux 的原生方法,作用是将所有中间件组成一个数组,依次执行。

(8) 需要用到redux全局数据的组件内

import React, { Component } from 'react'

import '../../login.css'

//npm i react-redux --save 安装react-redux

import { connect } from 'react-redux'//引入connect用于连接UI组件和redux

//引入对应的action

import {user} from '../../redux/actions/Login'

class Login extends Component {

enter=()=>{

const {value:useName}=this.useName

const {value:usePassword}=this.usePassword

console.log(this.props.userState);

console.log(this.props.user({useName,usePassword}));

console.log(this.props.userState);

}

render() {

return (

<div className='logon'>

<div>

<h1>登录</h1>

<input className='uses' ref={c => this.useName = c} type="text" placeholder='请输入用户名' /> <br />

<input className='uses' ref={c => this.usePassword = c} type="text" placeholder='请输入密码' /> <br />

<input type="checkbox" /><span>记住密码</span> <br />

<button onClick={this.enter}>登录</button>

</div>

</div>

)

}

}

export default connect(//UI组件包含组件

state => ({userState:state.login}),

{user}

)(Login)

(9)Provider 包住App组件

mport  store  from './redux/Store'

import { Provider } from 'react-redux'//给所有的容器组件提供store

console.log(store);

ReactDOM.render(

<React.StrictMode>

<Provider store={store}>

<App />

</Provider>

仅作参考:作为以后自己的笔记

redux和react-redux相关推荐

  1. React+Redux系列教程

    2019独角兽企业重金招聘Python工程师标准>>> 参考项目:https://github.com/lewis617/react-redux-tutorial 参考项目下载地址: ...

  2. React + Redux + Express + Mongodb 零基础开发完整大型商城网站视频教程(97 个视频)

    React + Redux + Express + Mongodb 零基础开发完整大型商城网站视频教程(97 个视频) mern 架构零基础开发完整电商网站 React + Redux + Expre ...

  3. React+Redux开发实录(一)搭建工程脚手架

    React+Redux开发实录(一)搭建工程脚手架 React+Redux开发实录(二)React技术栈一览 搭建工程脚手架 准备工作 安装node 安装git 安装一款前端IDE 推荐VSCode, ...

  4. 基于 react, redux 最佳实践构建的 2048

    前段时间 React license 的问题闹的沸沸扬扬,搞得 React 社区人心惶惶,好在最终 React 团队听取了社区意见把 license 换成了 MIT.不管 React license ...

  5. react开发教程(十)redux结合react

    描述 Redux 和 React 之间没有关系.Redux 可以搭配 React.Angular 甚至纯 JS.但是 Redux 还是比较适合和 React 搭配的,因为 React 允许你以 sta ...

  6. React Redux 的一些基本知识点

    一.React.createClass 跟 React.Component 的区别在于后者使用了ES6的语法,用constructor构造器来构造默认的属性和状态. 1. React.createCl ...

  7. 【视频】React redux toolkit创建状态切片

    React redux toolkit创建状态切片

  8. react实战项目_React实战之React+Redux实现一个天气预报小项目

    引言 经过一段时间的React学习,React和Vue的开发确实有很大的不同,但是都是MVVM框架,因此上手没有很大的难度,这次用React+Redux开发一个天气预报小项目.源码地址:https:/ ...

  9. React+Redux仿Web追书神器

    引言 由于 10 月份做的 React Native 项目没有使用到 Redux 等库,写了一段时间想深入学习 React,有个想法想做个 demo 练手下,那时候其实还没想好要做哪一个类型的,也看了 ...

  10. react+redux+generation-modation脚手架搭建一个todolist

    TodoList 1. 编写actions.js 2. 分析state 试着拆分成多个reducer 3. 了解store 4. 了解redux数据流生命周期 5. 分析容器组件和展示组件 搞清楚,数 ...

最新文章

  1. XamarinAndroid组件教程RecylerView适配器使用动画
  2. centernet2019.11.05
  3. 相依關係: XXXXXXXXX但它卻無法安裝
  4. php中拼接html代码,如何利用ajax给html动态拼接代码
  5. 基于IdentityServer4的单点登录——项目基本结构与流程
  6. wcf 基础教程 第一讲 wcf基础知识
  7. iphone怎么换手机铃声?原来方法这么简单,只需要一招 iRingg
  8. 国密SM2/SM3算法
  9. Mac用bootcamp安装Windows 11双系统
  10. 【运维心得】只有百度能打开,其他页面打不开怎么办?
  11. Python iter()函数
  12. Unity3D 的LookAt() 与 LookRotation()方法的比较
  13. 【visio】六步完成跨职能部门业务流程图
  14. 如何做Unity手游性能优化的
  15. 2019智能手表推荐_2020年买什么智能手表合适?
  16. 每次合上笔记本总是进入待机或休眠
  17. k8s pod 详解
  18. 高等数学学习笔记——第十七讲——无穷小量与无穷大量
  19. 新玺配资:市场强势修复 量能或成隐患
  20. 5w2h原则指的是什么_如何取得商标权?商标权的特征是什么?

热门文章

  1. ramdisk和linux PE,[PE教程]WINPE下如何再建一个Ramdisk盘
  2. 基于CSS盒模型的页面布局
  3. WeX5打包项目为app步骤详解
  4. echart地图隐藏南海诸岛
  5. Go--Redis快速入门指南
  6. 推荐系统-排序算法:GBDT+LR
  7. IONIC--如何使用IONIC
  8. wifi密码本 字典(免费二)
  9. jpg转换为eps_在线JPG到EPS转换器
  10. 关于BIOS升级的方法