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 相关文章推荐
强制设为首页代码
Jun 19 Javascript
jQuery实现form表单reset按钮重置清空表单功能
Dec 18 Javascript
Javascript拓展String方法小结
Jul 08 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
Jul 07 Javascript
vue之数据交互实例代码
Jun 20 Javascript
Angular如何引入第三方库的方法详解
Jul 13 Javascript
浅谈JS中的反柯里化( uncurrying)
Aug 17 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
Apr 04 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
微信小程序引入Vant组件库过程解析
Aug 06 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 Javascript
vue 限制input只能输入正数的操作
Aug 05 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
Protoss建筑一览
2020/03/14 星际争霸
PHP中的串行化变量和序列化对象
2006/09/05 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
Python如何实现远程方法调用
2020/08/07 Python
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
英文求职信写作小建议
2014/02/16 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
结婚典礼主持词
2015/06/29 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android