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 相关文章推荐
JS 自动安装exe程序
Nov 30 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
Dec 14 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
Nov 23 Javascript
node.js中的http.response.end方法使用说明
Dec 14 Javascript
javascript入门教程基础篇
Nov 16 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
js常用DOM方法详解
Feb 04 Javascript
Node.js利用debug模块打印出调试日志的方法
Apr 25 Javascript
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
通过实例解析jQ Ajax操作相关原理
Sep 23 Javascript
Vue3为什么这么快
Sep 23 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数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
在Django框架中设置语言偏好的教程
2015/07/27 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
python 弧度与角度互转实例
2020/04/15 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
会计职业生涯规划书
2014/01/13 职场文书
四查四看剖析材料
2014/02/14 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
小学教师教学反思
2016/02/24 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
mysq启动失败问题及场景分析
2021/07/15 MySQL
openstack云计算keystone组件工作介绍
2022/04/20 Servers