美文网首页
React redux

React redux

作者: 霡霂976447044 | 来源:发表于2020-10-10 15:04 被阅读0次
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import ReactDOM from 'react-dom'
import { createStore } from 'redux'
import { Provider, connect } from 'react-redux'

// React component
class Counter extends Component {
  render() {
    const { value, onIncreaseClick } = this.props
    return (
      <div>
        <span>{value}</span>
        <button onClick={onIncreaseClick}>Increase</button>
      </div>
    )
  }
}

class Counter2 extends Component {
  render() {
    const { counter2 } = this.props
    return (
      <div>
        <span>{counter2}</span>

      </div>
    )
  }
}

Counter.propTypes = {
  value: PropTypes.number.isRequired,
  onIncreaseClick: PropTypes.func.isRequired
}

// Action
const increaseAction = { type: 'increase' }

// Reducer
function counter(state = { count: 0 }, action) {
  const count = state.count
  switch (action.type) {
    case 'increase':
      return { count: count + 1 }
    default:
      return state
  }
}

// Store
const store = createStore(counter)

// Map Redux state to component props
function mapStateToProps(state) {
  return {
    value: state.count
  }
}

// Map Redux actions to component props
function mapDispatchToProps(dispatch) {
  return {
    onIncreaseClick: () => dispatch(increaseAction)
  }
}

// Connected Component
const Page1 = connect(
  mapStateToProps,
  mapDispatchToProps
)(Counter)

const Page2 = connect(
  (state) => ({counter2: state.count}),
  (dispatch)=>{}
)(Counter2)

ReactDOM.render(

    <Provider store={store}>
    <Page1 />
    <Page2/>
  </Provider>,

  
  document.getElementById('root')
)

React Props具有不可更改性,只有有状态组件的自己的state才能改,但是React推崇无状态组件,可以通过Redux映射全局状态到某一个组件,组件内通过调用函数的方式改变全局的store的数据。
Provider让所有组件都可以得到 state 数据
connect映射props的属性到全局store存储的属性
mapDispatchToProps映射组件的函数到 store.dispatch方法
store.dispatch会调用自己写的Reduce方法,这个方法是用来处理要改什么状态数据

不需要手动store.subscribe就可以数据变化触发更新UI

只用redux而不用redux-react则需要手动subscribe 更新ui

相关文章

  • Redux for ReactNative (二)

    安装 React Redux Redux不包含React库,需要单独安装React 绑定库 react-redux...

  • redux

    单独使用redux redux是核心库 与react配合使用redux 安装react-redux react-r...

  • 两张图看懂 React Redux 架构和数据流

    React 技术栈 React - 视图层Redux - 状态、数据层React-Redux - 连接Redux-...

  • redux note(一)

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

  • react-redux

    一、什么是react-redux React-Redux是Redux的官方React绑定。 它允许您的React组...

  • redux的简单应用

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

  • Redux简介

    Redux React-redux React-router Redux 1、基本用法: Redux中存在几个概念...

  • redux基础

    Redux react-redux React-router Redux 1、基本用法: Redux中存在几个概念...

  • 前端数据流之Redux篇(案例)

    create-react-app cartnpm i redux react-redux redux-thunk ...

  • react-redux

    使用react-redux,可以更方便的使用redux开发 先install react-redux使用react...

网友评论

      本文标题:React redux

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