React-redux实现小案例(todolist)的过程


Posted in Javascript onSeptember 29, 2019

使用React-redux实现,待办事项todolist案例。

注:以下列出主要页面代码,为说明React-redux实现的过程,所以并没有将案例的完整代码展示!

React-redux实现小案例(todolist)的过程

一、全局安装:rudux、react-redux

npm install redux --save
npm install react-redux

二、主要代码:

1、项目的入口文件index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './style/main.less';
import App from './App';
import * as serviceWorker from './serviceWorker';
//*********** 引入容器组件 *************
import {Provider} from 'react-redux';
import store from './store/store';

ReactDOM.render(
 // ********* 套入Provider组件,传入store *********
 <Provider store={store}>
 <App />
 </Provider>
, document.getElementById('root'));

serviceWorker.unregister();

2、列表页面(删除、完成)

import React from 'react';
import actionCreator from '../../../store/todoStore/actionCreator' ;
import {connect} from 'react-redux';
import { bindActionCreators } from 'redux';

class TodoEvent extends React.Component{
 //删除
 delete(id){
 // alert('delete'+id)
 this.props.delete(id);
 }
 //完成
 finish(id){
 // alert('finish'+id)
 this.props.finish(id);
 }
 //渲染函数
 renderList(){
 //容器组件,通过props获取
 let {todolist}=this.props.todoStore;
 return todolist.map((item)=>{
  return <li className='list-group-item' key={item.id}>
   {item.title}
   <button onClick={this.delete.bind(this,item.id)} className='btn btn-danger'>删除</button>
   {item.isFinish?'已完成': <button onClick={this.finish.bind(this,item.id)} className='btn btn-success'>完成</button>}
   </li>
 }) 
 }
 //渲染页面
 render(){
 return(
  <div>
  <ul className='list-group'>
   {this.renderList()}
  </ul>
  </div>
 )
 }

}

let mapStateToProps=(state)=>{
 return state;
}
//bindActionCreators 将绑定的actionCreator中的方法,放到props里直接调用,并触发dispacth
let mapDispatchToProps=(dispatch)=>{
 return bindActionCreators(actionCreator,dispatch)
}
//通过connect将UI组件,转换成容器组件
export default connect(mapStateToProps,mapDispatchToProps)(TodoEvent)

//简写,将 mapStateToProps 和 mapDispatchToProps 直接引入 connect
// export default connect(state=>state,(dispatch)=>{
// return bindActionCreators(actionCreator,dispatch)
// })(TodoEvent)

3、actionCreator组件

//actionCreator中对应的方法,只需 return action
const actionCreator={
 addlist(title){
 let action={
  type:'ADD_LIST',
  title:title
 }
 return action
 },
 delete(id){
 let action={
  type:'DELETE_LIST',
  id:id
 }
 return action
 },
 finish(id){
 let action={
  type:'FINISH_LIST',
  id:id
 }
 return action
 }
}

export default actionCreator

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript web页面刷新的方法收集
Jul 02 Javascript
javascript学习笔记(七)Ajax和Http状态码
Oct 08 Javascript
jQuery事件绑定和委托实例
Nov 25 Javascript
Angularjs 基础入门
Dec 26 Javascript
JavaScript的内存释放问题详解
Jan 21 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
Aug 06 Javascript
jQuery+HTML5实现图片上传前预览效果
Aug 20 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
深入理解Node.js 事件循环和回调函数
Nov 02 Javascript
详解vue mint-ui源码解析之loadmore组件
Oct 11 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 Javascript
javascript使用Blob对象实现的下载文件操作示例
Apr 18 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
Sep 29 #Javascript
在Layui中实现开关按钮的效果实例
Sep 29 #Javascript
layui之数据表格--与后台交互获取数据的方法
Sep 29 #Javascript
20多个小事例带你重温ES10新特性(小结)
Sep 29 #Javascript
解决layui页面按钮点击无反应,也不报错的问题
Sep 29 #Javascript
react用Redux中央仓库实现一个todolist
Sep 29 #Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 #Javascript
You might like
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP下10件你也许并不了解的事情
2008/09/11 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
ES6 async、await的基本使用方法示例
2020/06/06 Javascript
python的迭代器与生成器实例详解
2014/07/16 Python
Python多线程实例教程
2014/09/06 Python
python 把列表转化为字符串的方法
2018/10/23 Python
举例讲解Python常用模块
2019/03/08 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
医院辞职信范文
2014/01/17 职场文书
结婚喜宴主持词
2014/03/14 职场文书
心得体会的写法
2014/09/05 职场文书
购房协议书范本
2014/10/02 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
请病假条范文
2015/08/17 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
python如何利用cv2模块读取显示保存图片
2021/06/04 Python