Redux基础使用:

简介:这里是从需求来响应的执行操作redux,所以理解起来更加的容易
铭记在心的三点:action/reducer/store 除此之外就是react/react native的基础组件

需求:实现一个数字的加减1和重置

实现:

1:在组件内部使用this.setState()来操控
2:将数据独立起来,使用redux来操控
这里阐述第二种类: 首先下npm下依赖:

    "react-redux": "^4.4.5",
"redux": "^3.5.2",

1:创建actionTyprs,定义执行的类型名称

export const INCREASE = 'INCREASE';//加
export const DECREASE = 'DECREASE';//减
export const RESET = 'RESET';//重置

2:创建actions.js,action的函数,给组件使用

import { INCREASE, DECREASE, RESET } from './actionsTypes';
const increase = () => ({ type: INCREASE });
const decrease = () => ({ type: DECREASE });
// const reset = () => ({ type: RESET });
var reset = function reset(JD) {
console.log("case"+JD);
return { type: RESET,
parms:JD//从组件那边传递来的参数
};
}; export {
increase,
decrease,
reset
}

3:创建reducer.js(具体怎么操作)

import { combineReducers } from 'redux';
import { INCREASE, DECREASE, RESET} from './actionsTypes';
// 原始默认state,数据
const defaultState = {
count: 0,
factor: 1
}
//这里数据是从defaultState或者从组件那边过来,也就实现了数据的传递
function counter(state = defaultState, action) {
console.log("action");
console.log(action);
console.log("state");
console.log(state);
switch (action.type) {
case INCREASE:
return { ...state, count: state.count + state.factor };
case DECREASE:
return { ...state, count: state.count - state.factor };
case RESET:
return { ...state, count: action.parms };
default:
return state;
}
} export default combineReducers({
counter
});

4:创建全局的store.js,存放共享数据

import { createStore, applyMiddleware, compose } from 'redux';
// import createLogger from 'redux-logger';
import rootReducer from './reducers';
const configureStore = preloadedState => {
return createStore (
rootReducer,
// preloadedState,
// compose (
// applyMiddleware(createLogger())
// )
);
} const store = configureStore(); export default store;

5: 将redux和react/react native的组件结合

import React, { Component } from 'react';
import { Provider } from 'react-redux';
import Home from './home';
import store from './store'; export default class test extends Component {
render() {
return (
<Provider store={store}>
<Home/>
</Provider>
);
}
}

6:具体的页面的组件:

import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
TouchableOpacity
} from 'react-native';
import { connect } from 'react-redux';
import { increase, decrease, reset } from './actions'; class Home extends Component {
_onPressReset() {
this.props.dispatch(reset(80));
} _onPressInc() {
this.props.dispatch(increase());
} _onPressDec() {
this.props.dispatch(decrease());
} render() {
return (
<View style={styles.container}>
<Text style={styles.counter}>{this.props.counter.count}</Text>
<TouchableOpacity style={styles.reset} onPress={()=>this._onPressReset()}>
<Text>归零</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.start} onPress={()=>this._onPressInc()}>
<Text>加1</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.stop} onPress={()=>this._onPressDec()}>
<Text>减1</Text>
</TouchableOpacity>
</View>
);
}
} const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
flexDirection: 'column'
},
counter: {
fontSize: 50,
marginBottom: 70
},
reset: {
margin: 10,
backgroundColor: 'yellow'
},
start: {
margin: 10,
backgroundColor: 'yellow'
},
stop: {
margin: 10,
backgroundColor: 'yellow'
}
}) const abc = state => ({
counter: state.counter
}) export default connect(abc)(Home); 参考文档:http://blog.csdn.net/sinat_17775997/article/details/70176701

Redux基础使用的更多相关文章

  1. React躬行记(11)——Redux基础

    Redux是一个可预测的状态容器,不但融合了函数式编程思想,还严格遵循了单向数据流的理念.Redux继承了Flux的架构思想,并在此基础上进行了精简.优化和扩展,力求用最少的API完成最主要的功能,它 ...

  2. Redux基础

    Redux 是一个状态容器 Redux 就像是作者自己的介绍,它不会为你提供任何的东西,它不会告诉你如何做路由,它只专注于应用程序状态,是一个 JavasSript 的状态容器,所有的状态的变化都是当 ...

  3. redux基础(1)

    redux ps:每个案例都是接着上一个案例写的 主要以案例讲解如何使用,具体概念请参考如下: 基本概念参考1 基本概念参考2 案例源码戳这里 一.Store.Action.Reducer简介 Sto ...

  4. react+redux基础用法

    在学react的是,发现一旦我们封装好了我们的组件,那么我们的项目就跟搭积木一样简单快速,可是我们发现了一个问题,在一个页面往往会嵌套很多的组件,子组件必须要通过父组件传递参数才能渲染出数据,我们回想 ...

  5. react的Redux基础

    redux的中文文档:http://www.redux.org.cn/ redux的英文官网:https://redux.js.org/ redux相当于vuex Redux 是 JavaScript ...

  6. Redux 基础概念

    Redux is a predictable state container for JavaScript apps.,亦即 Redux 希望能提供一个可以预测的 state 管理容器,让开发者可以可 ...

  7. redux 基础

    antd 的使用 1.安装npm install antd --save 2.引入到项目中 import 'antd/dist/antd.css'; // or 'antd/dist/antd.les ...

  8. redux基础概念及执行流程详解

    一.执行流程 全局有一个公共的容器(所有组件都可以操作),我们可以在某个组件中把全局容器中的信息进行修改,而只要全局信息修改,就可以通知所有用到该信息的组件重新渲染(类似于发布订阅)==>red ...

  9. Redux基础必知必会 reducer拆分 中间件 单向数据流

    什么是 redux? 三大原则? 什么是 redux Redux 是一个基于 js 的全局可预测状态容器,主要用于现代前端框架中进行全局状态管理,能够在不同组件之间进行状态共享 Redux 常与 Re ...

随机推荐

  1. vue中组件通信之子父通信

    <div id="app"> <parent-comp1></parent-comp1> <parent-comp1></pa ...

  2. Python3自定义日志类 mylog

    #encoding=utf-8 import os, sysimport datetimeimport time class Mylog(object): # 根文件夹    root_dir = s ...

  3. Linux环境jdk的安装

    1.下载jdk1.7,oracle的下载地址已经失效,找了个其他的地址进行下载. wget http://pc.xzstatic.com/2017/03/jdk7u79linuxx64.tar.gz ...

  4. Python - mouse clicks and keystrokes on a background window

    https://stackoverflow.com/questions/43965437/python-mouse-clicks-and-keystrokes-on-a-background-wind ...

  5. 详解Django中六个常用的自定义装饰器

    装饰器作用 decorator是当今最流行的设计模式之一,很多使用它的人并不知道它是一种设计模式.这种模式有什么特别之处? 有兴趣可以看看Python Wiki上例子,使用它可以很方便地修改对象行为, ...

  6. Prometheus监控学习笔记之解读prometheus监控kubernetes的配置文件

    0x00 概述 Prometheus 是一个开源和社区驱动的监控&报警&时序数据库的项目.来源于谷歌BorgMon项目.现在最常见的Kubernetes容器管理系统中,通常会搭配Pro ...

  7. JavaScript实现表单验证_02

    注册3次错误,最终的结果: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  8. P2709 小B的询问(莫队)

    P2709 小B的询问 莫队模板 资磁离线询问 维护两个跳来跳去的指针 先分块,蓝后询问按块排序. 蓝后每次指针左右横跳更新答案 #include<iostream> #include&l ...

  9. oracle 11g SKIP_UNUSABLE_INDEXES参数

    SKIP_UNUSABLE_INDEXES的作用是在DML期间跳过对索引的维护,这样可以提交DML的效率,可以事后一次性重建,但是SKIP_UNUSABLE_INDEXES=y对unique inde ...

  10. node.js 初学(一)—— http fs 服务器/文件/post get

    node.js 初学 —— http fs 服务器/文件/post get 这个世界,从来不会给失败者颁奖! 了解 node.js (开源) node.js 是用来做后台开发的,但是现在大部分前端人员 ...