下面将以一个小案例来讲解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之attrgetter函数对对象排序

    # 使用attrgetter函数对对象排序 # attrgetter处理对象,itemgetter处理序列 from operator import attrgetter class user(): ...

  2. Dapper 介绍

    转载:http://***/html/itweb/20130918/125194_125199_125210.htm .NET 轻量级 ORM 框架 - Dapper 介绍 Dapper简单介绍: D ...

  3. TCP的三次握手与四次挥手过程,各个状态名称与含义

    三次握手 第一次握手:主机A发送位码为syn=1,随机产生seq number=10001的数据包到服务器,主机B由SYN=1知道,A要求建立联机,此时状态为SYN_SENT: 第二次握手:主机B收到 ...

  4. HDU - 1260 (Tickets)

    题意:  买票    一个人要么自己买  要么和前面的人一起买   这两种情况分别有一个买票所花费的时间  求总的花费时间最小 解析: dp[i] 表示前i个人买票总的花费时间 v[i]表示第i个人买 ...

  5. MT【55】近零点

    [Among the natural enemy of mathematics, the most important thing is that how do we konw     somethi ...

  6. 洛谷P1973 [NOI2011]Noi嘉年华(动态规划,决策单调性)

    洛谷题目传送门 DP题怕是都要大大的脑洞...... 首先,时间那么大没用,直接离散化. 第一问还好.根据题意容易发现,当一堆活动的时间有大量重叠的时候,更好的办法是把它们全部安排到一边去.那么我们转 ...

  7. BAI度 内部资料!Python_Threads多线程

    基本介绍 runable运行sleeping等待dead销毁(run方法执行完成或执行时抛出异常) 类继承threading.Thread线程的状态 函数介绍 在__init__里调用threadin ...

  8. Oracle11g创建表空间

    第1步:创建临时表空间   create temporary tablespace pgenius_temp tempfile '\data\oracle\oracledata\pgenius_tem ...

  9. 沉迷Link-Cut tree无法自拔之:[BZOJ3669][Noi2014] 魔法森林

    来自蒟蒻 \(Hero \_of \_Someone\) 的 \(LCT\) 学习笔记 $ $ 有一个很好的做法是 \(spfa\) ,但是我们不聊 \(spfa\) , 来聊 \(LCT\) \(L ...

  10. 对 static const char* const str[] = {“string”} 的理解

    static const char* const str[] = {“string”} 静态常量型指针变量 static const char* 常量型变量 const str[] 这样修饰的作用为 ...