下面将以一个小案例来讲解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之json数据存储

    # 数据存储:json.dump()和json.load() # date:2017-07-17 import json file_name = 'D:/json_file.txt' nums = [ ...

  2. entity framework 缓存干扰的数据不一致问题

    本来EF的设计上DbContext就应该是一个短暂存在的对象,所以它默认才开了缓存和自动检测对象修改之类的功能,而且不是线程安全的.理想的生命周期应该是处理一次请求使用一个context,全局使用会带 ...

  3. 洛谷P2698 [USACO12MAR]花盆Flowerpot

    P2698 [USACO12MAR]花盆Flowerpot 题目描述 Farmer John has been having trouble making his plants grow, and n ...

  4. php-编译模块1

    在路径中找到phpize 在需要编译的模块文件夹中执行 如: /usr/bin/phpize Configuring for: PHP Api Version: 20131106 Zend Modul ...

  5. mysql 性能指标

    qps 每秒处理的查询数tps 每秒处理的事务数IOPS 每秒磁盘进行的I/O操作次数 一.TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数. ...

  6. python成长之路八 -- 内置函数

    1,python内置函数     内置函数     abs() dict() help() min() setattr() all()  dir()  hex() next()  slice()  a ...

  7. SpringBoot基础入门

    1.SpringBoot核心相关内容 1.1入口类 SpringBoot通常有一个入口类*Application,内部有一个main方法,是启动SpringBoot的入口.使用@SpringBootA ...

  8. FieldGroup绑定的日期类型存储格式的问题

    问题 日期存储的时候,当前数据库中存储格式为 "2017-9-5 0:00:00", 而我实现了以后,看到数据库的存储格式为 "Mon Sep 04 00:00:00 C ...

  9. AI将带我们走向何方?

    AI即人工智能,对科幻着迷的博主对此认知颇深,打算从科幻电影入手,先讲下未来的AI将给人类带来哪些变化,哪些思考. 从最初的<星际航行>中的各种星球.地形等的介绍,到各个鉴于的探索,以及其 ...

  10. 【UR #17】滑稽树前做游戏

    假装看懂的样子 假装会做的样子 UOJ Round #17 题解 加上一个(t-w)^c,c是和i相连的点的度数 是一个多项式的话可以归纳证明 一些具体实现: 多项式存储,保留t,y, f=ai*t^ ...