美文网首页
redux和react-rudux

redux和react-rudux

作者: Betterthanyougo | 来源:发表于2020-05-01 23:55 被阅读0次

redux上⼿用⼀个累加器器举例例

  1. 需要⼀个store来存储数据
  2. store⾥的reducer初始化state并定义state修改规则
  3. 通过dispatch一个action来提交对数据的修改
  4. action提交到reducer函数里,根据传⼊的action的type,返回新的state
    创建store,src/store/ReduxStore.js
import {createStore} from 'redux'
const counterReducer = (state = 0, action) => {
    switch (action.type) {
      case 'ADD':
        return state + 1
      case 'MINUS':
        return state - 1
      default:
        return state
} }
const store = createStore(counterReducer)
export default store

创建ReduxPage

import React, { Component } from "react";
import store from "../store/ReduxStore";
export default class ReduxPage extends Component {
  componentDidMount() {
    store.subscribe(() => {
      console.log("subscribe");
      this.forceUpdate();
      //this.setState({});
}); }
  add = () => {
    store.dispatch({ type: "ADD" });
  };
  minus = () => { 
store.dispatch({ type: "MINUS" });
  };
  render() {
    console.log("store", store);
    return (
      <div>
        <h3>ReduxPage</h3>
        <p>{store.getState()}</p>
        <button onClick={this.add}>add</button>
        <button onClick={this.minus}>minus</button>
</div>
); }
}

如果点击按钮不能更新,因为没有订阅(subscribe)状态变更 还可以在src/index.js的render里订阅状态变更

import store from './store/ReduxStore'
const render = ()=>{
 ReactDom.render(
   <App/>,
   document.querySelector('#root')
 )
} render()
store.subscribe(render)

检查点

  1. createStore 创建store
  2. reducer 初始化、修改状态函数 3. getState 获取状态值
  3. dispatch 提交更新
  4. subscribe 变更订阅

使用react-redux react-redux提供了了两个api

  1. Provider 为后代组件提供store
  2. connect 为组件提供数据和变更方法
    全局提供store,index.js
 
import React from 'react'
import ReactDom from 'react-dom'
import App from './App'
import store from './store/'
import { Provider } from 'react-redux'
ReactDom.render(
  <Provider store={store}>
    <App/>
  </Provider>,
  document.querySelector('#root')
)

获取状态数据,ReactReduxPage.js

import React, { Component } from "react";
import { connect } from "react-redux";
class ReactReduxPage extends Component {
 render() {
   const { num, add, minus } = this.props;
   return (
     <div>
       <h1>ReactReduxPage</h1>
       <p>{num}</p>
       <button onClick={add}>add</button>
       <button onClick={minus}>minus</button>
</div>
); }
}
const mapStateToProps = state => {
 return {
   num: state,
 };
};
const mapDispatchToProps = {
 add: () => {
   return { type: "add" };
 },
 minus: () => {
   return { type: "minus" };
 }
};
export default connect( 
mapStateToProps, //状态映射 mapStateToProps
mapDispatchToProps, //派发事件映射 )(ReactReduxPage);

connect中的参数:state映射和事件映射

相关文章

  • redux和react-rudux

    redux上⼿用⼀个累加器器举例例 需要⼀个store来存储数据 store⾥的reducer初始化state并定...

  • redux的简单应用

    1、安装 redux和react-redux: npm i redux react-redux --save-de...

  • dva 框架介绍

    dva 是基于 redux 最佳实践 实现的 framework,简化使用 redux 和 redux-saga ...

  • redux note(一)

    redux 搭配 React使用 Redux和React之间没有关系,Redux支持React, Angular,...

  • React解惑之 redux-saga

    Redux-saga 概述 redux-saga和redux-thunk一样,是用于处理redux应用异步请求的中...

  • React Native的数据流控制:Redux和Mobx对比

    React Native的数据流控制 待补充~~ Redux or Mobx Redux和Mobx对比 Redux...

  • RN-Redux-Project-01

    React + Redux 搭建项目 1.项目搭建 ①新建项目 ②安装 redux 和 react-redux 2...

  • react-router路由守卫

    安装redux和react redux index.js 用react-redux的Provider复合组件实现逐...

  • React-Redux总结1-基础

    在学习react-redux之前我们需要对redux有个大概的了解,后面的文章会介绍redux的中间件和redux...

  • Redux配置文件

    配置: redux 是可预测状态容器,react-redux 是让 react 和 redux 结合工作的粘合剂,...

网友评论

      本文标题:redux和react-rudux

      本文链接:https://www.haomeiwen.com/subject/ipfhghtx.html