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 相关文章推荐
JQuery从头学起第三讲
Jul 06 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
Java  Spring 事务回滚详解
Oct 17 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
AngularJS 限定$scope的范围实例详解
Jun 23 Javascript
Vue代码分割懒加载的实现方法
Nov 23 Javascript
vue-prop父组件向子组件进行传值的方法
Mar 01 Javascript
微信小程序实现banner图轮播效果
Jun 28 Javascript
微信小程序页面间传值与页面取值操作实例分析
Apr 30 Javascript
使用JS来动态操作css的几种方法
Dec 18 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
Aug 03 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
提升PHP执行速度全攻略(下)
2006/10/09 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
暑假实习求职信范文
2013/09/22 职场文书
晚会邀请函范文
2014/01/24 职场文书
企业员工培训感言
2014/02/26 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
2014年妇联工作总结
2014/11/21 职场文书
员工年终考核评语
2014/12/31 职场文书
幼师大班个人总结
2015/02/13 职场文书
催款律师函范文
2015/05/27 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python