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 相关文章推荐
认识延迟时间为0的setTimeout
May 16 Javascript
jQuery 剧场版 你必须知道的javascript
May 27 Javascript
JavaScript基础语法让人疑惑的地方小结
May 23 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
Nov 10 Javascript
CSS3 media queries结合jQuery实现响应式导航
Sep 30 Javascript
Bootstrap Table使用整理(五)之分页组合查询
Jun 09 Javascript
JS文件中加载jquery.js的实例代码
May 05 jQuery
VUE2.0中Jsonp的使用方法
May 22 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
Sep 14 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/01 无线电
社区(php&amp;&amp;mysql)五
2006/10/09 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
JavaScript 数组运用实现代码
2010/04/13 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
python多进程共享变量
2016/04/06 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Django REST framework视图的用法
2019/01/16 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
parser.add_argument中的action使用
2020/04/20 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
旅行社各个岗位职责
2014/03/15 职场文书
年终奖发放方案
2014/06/02 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
实习单位鉴定意见
2015/06/04 职场文书
Python 如何安装Selenium
2021/05/06 Python