react-redux学习初步总结
1.index.js文件中需要引入
a.React(把jsx编译到js需要调用一个函数, 这个函数在React叫React.createElement. 解答地址:https://segmentfault.com/q/1010000011479561,注意后面评论,查看ES6-Module),
b.ReactDOM,
c.要渲染的总组件。
示例如下:
//index.js
import React from "react";
import ReactDOM from 'react-dom';
import App from "./page/todoListRedux/app"
ReactDOM.render(<App />,document.getElementById("root"))
2.总组件中需要引入
a.React,{Component,Fragment}(Fragment页面不会渲染的包含块)
b.引入store所在位置
c.{Provider}:相当于store所作用的范围容器
d.子组件所在位置
并将总组件暴露给index
示例如下:
//app.js
import React, { Component, Fragment } from "react";
import store from "./store/store";
import { Provider } from "react-redux"; import Input from "./component/input"; export default class App extends Component {
render() {
return (
<Provider store={store}>
<Fragment>
<Input />
</Fragment>
</Provider>
)
}
}
3.store.js中需要引入
a.创建store的方法{createStore}
b.对redux的dispacth方法进行封装的方法applyMiddleware
c.rudecer(设计数据结构和actions处理)
d.thunk 实现异步action
将store暴露给总组件app.js
代码示例如下:
import { createStore, applyMiddleware } from "redux";
import reducers from "./reducers";
// import logger from "redux-logger";
import thunk from "redux-thunk";
// console.log(logger,thunk)
// import { addTodo,changeCompleted } from "./actions"
// redux-thunk实现异步action
// redux-logger是redux得日志中间件
const store = createStore(reducers,applyMiddleware(thunk))
export default store
4.actions.js
a.用变量代替action字符串
b.action接收的参数返回出去,传递给reducers
c.将action暴露给子组件(即:用户具体的操作行为)
示例如下:
export const ADD_TODO = "ADD_TODO";
export function addTodoAction({id,text}) {
return {
type: ADD_TODO,
text,
id
}
}
5.reduers.js
a.引入合并处理action方法的方法:combineReducers
b.定义state数据结构
c.定义function,根据用户操作,dispatch过来的action中的type对state数据中的具体的数据进行操作
d.合并function,将其放入reducers(注:只有合并以后的function在子组件中才能获取到)
e.将reducers暴露给store
代码示例如下:
import { combineReducers } from "redux";
const initdata = {
todoList: [{
id: 0,
text: "HTML",
completed: true
}, {
id: 1,
text: "CSS",
completed: false
}, {
id: 2,
text: "JS",
completed: true
}, {
id: 3,
text: "NodeJs",
completed: false
}],
id:4,
showType:"All"
}
function todoList(state=initdata.todoList,action){
// console.log(action)
let newArr=JSON.parse(JSON.stringify(state))
if(action.type==="ADD_TODO"){
newArr.push({
id:action.id,
text:action.text,
completed:false
})
}else if(action.type==="COMPLETED_TODO"){
newArr.map((item)=>{
if(item.id===action.id){
item.completed=!item.completed
}
return item
})
}
return newArr
}
const reducers=combineReducers({
todoList,id,showType
})
export default reducers;
6.子组件
a.引入React,{Component}
b.引入connect(连接ruducers里面的数据)
c.引入actions.js中的用户操作行为方法
d.定义组件名称,从this.props中获取自己需要的方法/数据(或参数),并根据用户行为触发不同的action,通过dispatch来对数据进行相应操作
e.连接reducers,并从中获取需要的数据放入this.props中
代码示例如下:
import React, { Component, Fragment } from "react";
import {connect} from "react-redux";
import styles from "../static/style.css"
import {changeCompleted} from "../store/actions"
class List extends Component {
render() {
const {dispatch,showType}=this.props
let list=this.props.todoList.filter((item)=>{
if(showType==="All"){
return item
}else if(showType==="WillDo"){
return item.completed===false
}else if(showType==="Did"){
return item.completed===true
}
})
return (
<Fragment>
<ul>
{
list.map((item,index)=>{
return <li key={index}
className={styles[item.completed?'active':""]}
onClick={()=>{
// console.log(item.id)
dispatch(changeCompleted(item.id))
}}
>{item.text}</li>
})
}
</ul>
</Fragment>
)
}
}
export default connect(function(state){
return state
})(List)
初步总结:react-redux的初步使用体验
github:https://github.com/aliAjax/reactTodoListReduxDemo.git
包含了不用redux的todoList Demo
react-redux学习初步总结的更多相关文章
- React Redux学习笔记
React Router React Router 使用教程 Redux中间件middleware [译]深入浅出Redux中间件 Redux学习之一:何为middleware? ES6 ES6新特性 ...
- React+Redux学习笔记:React+Redux简易开发步骤
前言 React+Redux 分为两部分: UI组件:即React组件,也叫用户自定义UI组件,用于渲染DOM 容器组件:即Redux逻辑,处理数据和业务逻辑,支持所有Redux API,参考之前的文 ...
- react redux学习之路
React 自学 chapter one React新的前端思维方式 React的首要思想是通过组件(Component)来开发应用.所谓组件,简单说,指的是能够完成某个特定功能的独立的.可重用的代码 ...
- react与redux学习资料的整理
**重点内容**React学习 1.新手入门可以访问react的官方网站,如果英语不是特别好的同学可以访问中文版的,具体链接http://reactjs.cn/react/index.html 首页有 ...
- Redux学习(3) ----- 结合React使用
Redux 和React 进行结合, 就是用React 做UI, 因为Redux中定义了state,并且定义了改变或获取state的方法,完全可以用来进行状态管理,React中就不用保存状态了,它只要 ...
- react/redux组件库、模板、学习教程
开源的有蚂蚁金服的: 1.https://pro.ant.design/index-cn 2.https://pro.ant.design/docs/getting-started-cn 3.http ...
- redux学习
redux学习: 1.应用只有一个store,用于保存整个应用的所有的状态数据信息,即state,一个state对应一个页面的所需信息 注意:他只负责保存state,接收action, 从store. ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- react+redux官方实例TODO从最简单的入门(6)-- 完结
通过实现了增-->删-->改-->查,对react结合redux的机制差不多已经了解,那么把剩下的功能一起完成吧 全选 1.声明状态,这个是全选状态 2.action约定 3.red ...
- react+redux官方实例TODO从最简单的入门(1)-- 前言
刚进公司的时候,一点react不会,有一个需求要改,重构页面!!!完全懵逼,一点不知道怎么办!然后就去官方文档,花了一周时间,就纯react实现了页面重构,总体来说,react还是比较简单的,由于当初 ...
随机推荐
- 【ES6 】Promise
Promise对象定义: 用来处理异步编程 Promise对象的特点 对象的状态不受外界影响 一旦状态改变,就不会再变,任何时候都可以得到这个结果 Promise对象的状态 pending(进行中) ...
- 14 Django之Form和Model Form组件
一.什么是Form 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...
- PHP 多维数组将下标从0开始
点击链接加入群[php/web 学习课堂]:https://jq.qq.com/?_wv=1027&k=5645xiw 欢迎大家加入,一起讨论学习 模拟一个: public function ...
- K2 BPM_K2受邀出席SAP研讨会:共话“智能+”时代下的赋能与转型_全业务流程管理专家
3月5日,第十三届全国人大二次会议在北京召开.政府工作报告首次出现“智能+”,并明确指出2019年,要打造工业互联网平台,拓展“智能+”,为制造业转型升级赋能.从政府工作报告中不难看出,“智能+” ...
- 使用nodejs创建Marketing Cloud的contact数据
源代码如下: var config = require("./mcConfig"); var request = require('request'); var url = con ...
- python 把函数的值赋给变量
本博文的知识点一个是模块的调用和一个自定义函数返回值赋值给变量 编写一个简单的函数模块: [root@bigdata zw]# more d.py #!/usr/bin/python # -*- co ...
- 简单服务器通信 模型socketserver
硬件服务器:主机 集群 厂商 :IBM HP 联想 浪潮 软件服务器 :编写的服务端应用程序,在硬件服务器上运行,一般依托于操作系统,给用户提供一套完整的服务 httpserver --> ...
- sql 连接数查询
SELECT * FROM master.dbo.sysprocesses WHERE dbid IN ( SELECT dbid FROM master.dbo.sysdatabases WHERE ...
- P3528 [POI2011]PAT-Sticks
题目概述 题目描述 给出若干木棍,每根木棍有特定的颜色和长度.问能否找到三条颜色不同的木棍构成一个三角形. (注意这里所说的三角形面积要严格大于\(0\)) 输入格式 第一行给出一个整数\(k\),表 ...
- JDBC下
存储过程名字前面一定要加一个sp,代表是存储过程 nofilter:没有过滤器,没有参数 )) BEGIN IF sp_name IS NULL OR sp_name='' THEN SELECT * ...