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 相关文章推荐
30个最佳jQuery Lightbox效果插件分享
Apr 11 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
Feb 05 Javascript
jquery js 获取时间差、时间格式具体代码
Jun 05 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
javascript跑马灯抽奖实例讲解
Apr 17 Javascript
AngularJS 指令详细介绍
Jul 27 Javascript
bootstrap fileinput 插件使用项目总结(经验)
Feb 22 Javascript
Angular2实现自定义双向绑定属性
Mar 22 Javascript
JavaScript操作文件_动力节点Java学院整理
Jun 30 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
Feb 09 Javascript
js实现抽奖功能
Nov 24 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
PHP5/ZendEngine2的改进
2006/10/09 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
jQuery实现简单评论功能
2020/08/19 jQuery
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
详解Python3中yield生成器的用法
2015/08/20 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
python实现屏保计时器的示例代码
2018/08/08 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
python属于哪种语言
2020/08/16 Python
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
函授毕业生的自我鉴定
2013/11/26 职场文书
加拿大留学自荐信
2014/01/28 职场文书
临床护士自荐信
2014/01/31 职场文书
营业员岗位职责
2015/02/11 职场文书
2015年推普周活动方案
2015/05/06 职场文书
公司员工管理制度
2015/08/04 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
MySQL多表查询机制
2022/03/17 MySQL