redux/react-redux的理解和使用demo

 本质理解:

组件A和B通过一个公共对象上C进行通信 ,

A更新后,通知C,C相当于一个接线员 ,通过reducer,来决定收到消息发给谁, 收到的数据存在store中,达到双向通向的目的

项目结构

关键代码

comA/index.js

import React, { Component } from 'react'
import { connect } from 'react-redux'

class ComA extends Component {
  handleClick = ()=>{
      console.log("ComA",this.props);
      this.props.sendAction();
  }
  render() {
    return (
      <div>
          <button onClick={this.handleClick} type="">+</button>
      </div>
    )
  }
}

const mapDispatchToprops = (dispatch)=>{
    return {
        sendAction:()=>{
            dispatch({
                type:"add_action"
            })
        }
    }
}
export default connect(null,mapDispatchToprops)(ComA);

comB/index.js

import React, { Component } from 'react'
import { connect } from 'react-redux'

class ComB extends Component {
  render() {
    console.log("ComB props",this.props)
    return (
      <div> {this.props.count} </div>
    )
  }
}
 
const mapStateToProps = state=>{
  console.log(state);
  return state;//这里把state返回给了ComB的props
}
export default connect(mapStateToProps)(ComB);

redurer/index.js

const initState={
    count:10
}
exports. reducer = (state = initState,action)=>{
    console.log(initState,action,state);
  //  return initState;
    switch(action.type){
        case "add_action":
            console.log("+1",state);
            return {
                count:state.count+1
            }
        default:
            return state;
    }
}

 

 App.js


import Home from "./pages/home/index"
import ComA from "./pages/comA";
import ComB from "./pages/comB";
import { Provider } from "react-redux";
import store from "./store";
 

function App() {
  return (
   <Provider store={store}>
      <div className="App">
 
        <Home />
        <ComA />
        <ComB />
        </div>
   </Provider>
  );
}

export default App;

store/index.js

import { createStore } from "redux";

import {reducer} from "../reducer/index"
 
const store = createStore(reducer);
export default store;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值