react框架实现点击事件计数小案例
代码块:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
// import App from './App';
import {BrowserRouter as Router,Route,Link} from 'react-router-dom'
import { createStore } from 'redux'
// import store from './store.js'
import { Provider,connect } from 'react-redux'
// import Page3final from './Page3'; // as的作用,另外取名 Router = BrowserRouter
class Counter extends React.Component {
render() {
// const { value, onIncreaseClick } = this.props
const value = this.props.value
//value是计的数,实际上store.state通过props来进行传递到组件
const onIncreaseClick = this.props.onIncreaseClick
//onIncreaseClick,这个方法也是通过props传入进来,这个函数执行1次,那么这个value值+1
console.log(this.props)
return ( <div>
<span>{value}</span>
{/* <span>{this.props.value}</span> */}
<button onClick={onIncreaseClick}>Increase</button>
</div>
)
}
}
const increaseAction={type:'increase'} //此对象有一个type属性
//reduce函数,这个函数最终决定state如何更改内容,而且每一次如果要更新视图
//那么state都要全新更新一个对象
// reducer函数,这个函数最终决定state如何更改内容,而且每一次如果要更新试图,那么state都要全新的1个对象 var initState = { count: }
// 初始状态为initState,根据action的不同值(类型)执行不同的内容
function counter(state = initState, action) {
const count = state.count
// action.type表示动作的类型
switch (action.type) {
// case 'increase':表示动作的类型为increase
case 'increase':
// state.count++
// console.log(state)
return { count: count + }
// 如果以上动作类型都不是,则返回最初状态
default:
return state
}
}
//实例化仓库对象,需要决定状态如何变更的函数,该仓库管理状态
console.log(createStore)
const store = createStore(counter) //将状态绑定到props的方法
//传入一个state值进来,然后返回一个对象绑定到props里
function mapStateToProps(state) {
return {
value: state.count
}
}
//将触发更改状态的方法绑定到(组件上)props
//首先传入dispatch进行触发
function mapDispatchToProps(dispatch){
// 返回方法的内容,返回的内容都会被绑定到props上
return{
// ()=>dispatch(increaseAction)这个函数具有dispatch方法
//dispatch则调用counter函数然后将
//const increaseAction = { type: 'increase' } 获取的类型进行下一步
// onIncreaseClick:()=>dispatch(increaseAction)
onIncreaseClick:function(){//以上写法相当于这个写法
dispatch({type:'increase'})
}
}
}
// Action Creator
// const increaseAction = { type: 'increase' } //此对象有一个type属性
// function mapDispatchToProps(dispatch) {
// return {
// // onIncreaseClick: () => dispatch(increaseAction)
// onIncreaseClick:function(){
// dispatch({type:'increase'})
// }
// }
// } //connect方法给Counter组件的props传入
//state(mapStateToProps,)以及更改state的方法(mapDispatchToProps)
//此处connect表示方法,连接
const App = connect(
//两个函数作为一个参数传入,然后以函数传入到组件Counter,
//再实例化一个App
mapStateToProps,
mapDispatchToProps
// 此处的Counter表示组件
)(Counter) ReactDOM.render(
// 再将App和store注入进来
<Provider store={store}>
<App />
</Povider>,
document.getElementById('root')
);
react框架实现点击事件计数小案例的更多相关文章
- react添加右键点击事件
1.在HTML里面支持contextmenu事件(右键事件).所以需要在组建加载完时添加此事件,销毁组建时移除此事件. 2. 需要增加一个state,名称为visible,用来控制菜单是否显示.在_h ...
- touch滑动事件---简单小案例
html: <!--导航栏头部--><div class="type_nav"> <ul class="clearfix " v- ...
- 关于js中的事件委托小案例
需求:页面上有一个按钮,和一个空的ul,要求点击按钮,会给ul中动态添加li元素,然后,点击动态添加的元素,在控制台上输出,这是第几个元素 <ul> </ul> <but ...
- 点击 显示红色 小案例 vue
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- react框架的状态管理
安装: cnpm install --save redux cnpm install --save react-redux 安装好后导入模块内容: impor {createStore} from ...
- 小程序Echarts 构建中国地图并锚定区域点击事件
小程序Echarts 构建中国地图并锚定区域点击事件 Step1 效果展示 使用的绘图框架为 Echarts for Wexin 具体API文档地址请点击 ----> Step2 条件准备 1. ...
- react native 中webview内的点击事件传到外部原生调用
先说一下我使用webview的时候遇到的一个功能需求 是这样的,上图中的这个页面是用h5做的,但是由于点击"我的优惠劵"是需要跳转到我原生的页面,也就是说我需要获得这个h5提供的点 ...
- 微信小程序tips集合:无法输入文字/随时查看页面/元素审查/点击事件/数据绑定
1:编辑文档无法输入文字 出现这种情况一般是因为之前编辑的文档未保存,所有在其他文档输入的时候会自动输入到未保存的文档中,在文档暂时编辑完毕后要ctrl+s随手保存,不然会出现无法打字情况 2: 随时 ...
- 小程序实践(五):for循环绑定item的点击事件
微信展示列表效果借助于 wx:for 简单写一个列表(wxml文件中): 对应的数据源(js文件中): 写一个点击监听: 效果: 以上.可以实现列表的item点击效果,但是无法到点击的item对应的 ...
随机推荐
- Maven概述(一)
Maven是什么? Apache Maven is a software project management and comprehension tool. Based on the concept ...
- BZOJ1805[Ioi2007]Sail船帆——线段树+贪心
题目描述 让我们来建造一艘新的海盗船.船上有 N个旗杆,每根旗杆被分成单位长度的小节.旗杆的长度等于它被分成的小节的数目.每根旗杆上会挂一些帆,每张帆正好占据旗杆上的一个小节.在一根旗杆上的帆可以任意 ...
- BZOJ3771 Triple(FFT+容斥原理)
思路比较直观.设A(x)=Σxai.先把只选一种的统计进去.然后考虑选两种,这个直接A(x)自己卷起来就好了,要去掉选同一种的情况然后除以2.现在得到了选两种的每种权值的方案数,再把这个卷上A(x). ...
- 【洛谷P1717】钓鱼
题目大意:给定 N 个位置,每个位置有一个答案贡献值,在一个位置加了一次该位置的答案贡献值之后,该值会减掉一部分,从一个位置移动到另一个位置需要花费一定的时间,问:给定 M 单位的时间,如何移动使得答 ...
- (转)Java程序员的面试经历和题库
背景:最近我在找工作,前期就像打了鸡血的一样,隔一段时间没有面试,就又松懈了下来,看到别人写的面经,感觉就像打脸一般,以后要多多总结前人的经验,时刻保持压力状态才是. 作者:nuaazhaofeng2 ...
- Linux:echo中,>和>>的区别(保存结果和追加结果)
在Linux中,对于echo命令,保存文件时,">"和">>"是有区别的: 假如有A_R1,B_R2,C_R1三个字符 for i in `l ...
- linux系统关闭IPv6的方式
云服务器 ECS> Linux操作运维问题 > 应用配置 > linux系统关闭IPv6的方式 linux系统关闭IPv6的方式 IPv6被认为是IPv4的替代产品,它用来解决现有I ...
- ElasticSearch 之 dis_max tie_break的应用
1. 插入数据 PUT /my_index/my_type/ { "title": "Quick brown rabbits", "body" ...
- 4、Python-列表
列表格式 # 元素可以是不同类型的 namesList = [1, 'xiaoZhang', 'xiaoHua'] print(namesList[0]) print(namesList[1]) pr ...
- vue基础篇---class样式绑定
因为class的绑定在实际的工作中会经常用到.所以特意记录一下,有好几种方法. 对象绑定方法,另外一个值来控制显示隐藏 <!DOCTYPE html> <html lang=&quo ...