当前位置: 移动技术网 > IT编程>开发语言>JavaScript > react redux入门示例

react redux入门示例

2018年04月28日  | 移动技术网IT编程  | 我要评论
环境准备 为了方便,这里使用create-react-app搭建react环境 create-react-app mydemo 弹出配置 如果需

环境准备

为了方便,这里使用create-react-app搭建react环境

create-react-app mydemo

弹出配置

如果需要自定义react的配置,需要运行下面的命令把配置文件弹出来。

npm run eject

安装redux

npm i redux --save

简单理解

redux简单用法就是通过它的store来订阅和发布信息。

通过subscribe来订阅action,通过dispatch来触发action。reducer中定义来各个action要做的事情。

demo代码

reducer定义

const add = 'addgirl', remove = "removegirl";
export function reducer(state = 0, action) {
  switch (action.type) {
    case add:
      return state + 1;
    case remove:
      return state - 1;
    default:
      return 10;
  }
}

//action creator,把action封装成一个方法,这样用的时候不用每次定义,避免出错
export function addcreator() {
  return { type: add };
}
export function removecreator() {
  return { type: remove };
}

export function addasync() {
  return (dispatch, getstate) => {
    settimeout(function () {
      dispatch(addcreator());
    }, 1000);
  }
}

入口文件index.js

import react from 'react';
import reactdom from 'react-dom';
import './index.css';
import app from './app';
import registerserviceworker from './registerserviceworker';
import { createstore } from 'redux';
import thunk from 'redux-thunk';
import { reducer,addcreator,removecreaator } from './index.redux';
import { provider } from 'react-redux'
const store = createstore(reducer);
function render() {
  reactdom.render(
    <app store={store} addcreator={addcreator} removecreator={removecreator} />,
    document.getelementbyid('root')
  );
}
//封装成方法,方便下面的store的订阅调用
render();
//每当dispatch时,订阅的函数就会执行
store.subscribe(render);
registerserviceworker();

app.js

import react, { component } from 'react';
import './app.css';
class app extends component {
 render() {
  var store=this.props.store;
  var num=store.getstate();
  return (
   <div classname="app">
    <h1>现在有机关枪{this.props.num}把。</h1>
    <button onclick={() => { store.dispatch(this.props.addcreator()) }}>add</button>
    <button onclick={() => { store.dispatch(this.props.removecreator()) }}>remove</button>
   </div >
  );
 }
}
export default app;

通过store的dispatch来触发action,index.js中订阅的事件就会执行。

redux的异步执行

redux中如果需要执行异步操作,需要安装react-thunk插件

npm i react-thunk --save

同时需要redux插件的applymiddleware

关键代码

设置其实很简单,创建store时,把thunk传递给它就行了。

import thunk from 'redux-thunk';

const store = createstore(reducer, applymiddleware(thunk));

在app.js中增加一个触发异步操作的按钮,reducer中已经定义了一个异步的方法。

export function addasync() {
  return (dispatch, getstate) => {
    settimeout(function () {
      dispatch(addcreator());
    }, 1000);
  }
}

异步调用方法会返回一个有两个参数的方法,两个参数都是函数,第一个是dispatch函数,第二个是getstate函数。
dispatch触发action,getstate获取state的值。

在app.js中增加代码

<button onclick={() => { store.dispatch(this.props.addasync()) }}>addasync</button>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网