下面将以一个小案例来讲解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框架实现点击事件计数小案例的更多相关文章

  1. react添加右键点击事件

    1.在HTML里面支持contextmenu事件(右键事件).所以需要在组建加载完时添加此事件,销毁组建时移除此事件. 2. 需要增加一个state,名称为visible,用来控制菜单是否显示.在_h ...

  2. touch滑动事件---简单小案例

    html: <!--导航栏头部--><div class="type_nav"> <ul class="clearfix " v- ...

  3. 关于js中的事件委托小案例

    需求:页面上有一个按钮,和一个空的ul,要求点击按钮,会给ul中动态添加li元素,然后,点击动态添加的元素,在控制台上输出,这是第几个元素 <ul> </ul> <but ...

  4. 点击 显示红色 小案例 vue

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. react框架的状态管理

    安装: cnpm install --save redux cnpm install --save react-redux   安装好后导入模块内容: impor {createStore} from ...

  6. 小程序Echarts 构建中国地图并锚定区域点击事件

    小程序Echarts 构建中国地图并锚定区域点击事件 Step1 效果展示 使用的绘图框架为 Echarts for Wexin 具体API文档地址请点击 ----> Step2 条件准备 1. ...

  7. react native 中webview内的点击事件传到外部原生调用

    先说一下我使用webview的时候遇到的一个功能需求 是这样的,上图中的这个页面是用h5做的,但是由于点击"我的优惠劵"是需要跳转到我原生的页面,也就是说我需要获得这个h5提供的点 ...

  8. 微信小程序tips集合:无法输入文字/随时查看页面/元素审查/点击事件/数据绑定

    1:编辑文档无法输入文字 出现这种情况一般是因为之前编辑的文档未保存,所有在其他文档输入的时候会自动输入到未保存的文档中,在文档暂时编辑完毕后要ctrl+s随手保存,不然会出现无法打字情况 2: 随时 ...

  9. 小程序实践(五):for循环绑定item的点击事件

    微信展示列表效果借助于 wx:for  简单写一个列表(wxml文件中): 对应的数据源(js文件中): 写一个点击监听: 效果: 以上.可以实现列表的item点击效果,但是无法到点击的item对应的 ...

随机推荐

  1. python之打印日志logging

    import logging # 简单打印日志举例 logging.basicConfig(level=logging.DEBUG) # 设置日志级别,WARN logging.warning('Wa ...

  2. appium学习记录1

    xpath定位: 语法 driver.find_element_by_xpath("//android.widget.EditText[@index="登陆"/../pr ...

  3. JAVA内部类小结

    内部类的概念:定义在其他类里面的类叫做内部类,包含内部类的类叫做外部类: 内部类的作用:内部类主要是用来描述一个事物存在于另一个事物里面,依赖于外部事物存在的: 内部类的格式: 内部类的分类: 成员内 ...

  4. 【BZOJ1856】[SCOI2010]字符串(组合数学)

    [BZOJ1856][SCOI2010]字符串(组合数学) 题面 BZOJ 洛谷 题解 把放一个\(1\)看做在平面直角坐标系上沿着\(x\)正半轴走一步,放一个\(0\)看做往\(y\)轴正半轴走一 ...

  5. 构建MySQL-Cluster

    Mysql Cluster概述与部署MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件 ...

  6. CF1114E Arithmetic Progression(交互题,二分,随机算法)

    既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...

  7. Division, UVa 72(暴力求解)

    题目链接:https://vjudge.net/problem/UVA-725 Write a program that finds and displays all pairs of 5-digit ...

  8. Python--Django学习笔记2

    本篇介绍Django中的Model层. 首先介绍sqlite3,这是在当前版本中Django默认使用的数据库,sqlite也是Android中所使用的数据库. 接着介绍最最最常见的MySQL数据库如何 ...

  9. AtCoder Regular Contest 066 F Contest with Drinks Hard

    题意: 你现在有n个题目可以做,第i个题目需要的时间为t[i],你要选择其中的若干题目去做.不妨令choose[i]表示第i个题目做不做.定义cost=∑(i<=n)∑(i<=j<= ...

  10. windows & gcc & mingw & mysy 编译 openssl

    今天有一个项目需要使用到 https, 以前一直用的都是http请求, 用 socket() 实现 https 请求我还真是头一回遇到. 先网上搜索了一下相关资料,明白了 https 相比较 http ...