跨組件通信

vue : state mutation action module
redux: state reducer action conbine合并reducer

第一步:我們在login組件中創(chuàng)建一個redux.js

const initState ={
    isLogin:false,
    usename:"李白"
}
export const updateLogin=(payload)=>{
    return {
        type:"LOGIN_UPDATE_LOGIN",
        payload
    }
}
export const updateUsename=(payload)=>{
    return {
        type:"LOGIN_UPDATE_USENAME",
        payload
    }
}
export default (state=initState,action)=>{
    let {type}=action
    switch(type){
        case 'LOGIN_UPDATE_LOGIN':
            return{
                ...state,
                isLogin:action.payload
        }
        case 'LOGIN_UPDATE_USENAME':
            return{
                ...state,
                usename:action.payload
            }
        default : 
        return state
    }
   
}

第二步:在cart組件中創(chuàng)建redux.js

const initState ={
    cartNum:0
}
export const updateCartNum=(paylog)=>{
    return {
        type:"CART_UPDATE_CARTNUM",
        paylog
    }
}
export default (state=initState,action)=>{
    let {type}=action
    switch(type){
        case 'CART_UPDATE_CARTNUM':
            return{
                ...state,
                cartNum:action.paylog

            }
            default :
                return state
    }
}

第三步:在src的目錄下創(chuàng)建一個redux的文件
這個用于對各個組件中的redux的模塊進行集中管理

import { combineReducers,createStore } from "redux";
//導入模塊
import cartReducer from '../pages/cart/redux'
import loginReducer from '../pages/login/redux'
//把模塊都存放到reduces
const reduces =combineReducers({
    login:loginReducer,
    cart:cartReducer
})
const store =createStore(reduces)
export default store;

第四步:在全局的index.js中進行掛載

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

//1.導入react-redux
import { Provider } from "react-redux";
//2.導入redux的模塊
import store from '../src/redux/redux'

ReactDOM.render(
//3.然后用Provider包住 <App />测暗,Provider里面是我們的redux的模塊
    <Provider store={store}>
        <App />
    </Provider>
, document.getElementById('root'));

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();

第五步:在我們需要的模塊中去使用宋彼,例如cart模塊

import React from 'react';
//1.導入react-redux
import { connect } from "react-redux";
//2.導入redux
import { bindActionCreators } from "redux";
//3.導入updateLogin疏之,這個是我們模塊中定義的方法
import {updateLogin} from '../login/redux';

class My extends React.Component{
    constructor(props) {
        super(props);
        this.login=this.login.bind(this)
    }

    render() {
        let {isLogin}=this.props
        console.log("isLogin",isLogin)
        return (
        <div>
          {isLogin?<p>李白</p>:<button onClick={this.login}>立即登錄</button>}</div>
        )
    }

    ////////////////////修改username
login(){
     setTimeout(() => {
         this.props.updateLogin(true);
     }, 2000);   
}
}
// export default My;

// 4.把state的值放入props
function mapStateToProps(state) {
    return {
        isLogin: state.login.isLogin
    };
  }
  
  // 5.把action放入props作儿,注意:這里的updateLogin要與我們上面導入的updateLogin一致
  function mapDisapatchToProps(dispatch) {
    return {
    updateLogin: bindActionCreators(updateLogin, dispatch)
    };
  }  
  // 6.把Center組件變成高階組件(放入一個組件,得到一個新組件)
  export default connect(mapStateToProps, mapDisapatchToProps)(My);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狡耻,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件波闹,死亡現(xiàn)場離奇詭異酝豪,居然都是意外死亡,警方通過查閱死者的電腦和手機精堕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門孵淘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人歹篓,你說我怎么就攤上這事瘫证。” “怎么了庄撮?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵背捌,是天一觀的道長。 經(jīng)常有香客問我洞斯,道長毡庆,這世上最難降的妖魔是什么坑赡? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮么抗,結(jié)果婚禮上毅否,老公的妹妹穿的比我還像新娘。我一直安慰自己蝇刀,他們只是感情好螟加,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吞琐,像睡著了一般捆探。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上站粟,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天黍图,我揣著相機與錄音,去河邊找鬼卒蘸。 笑死雌隅,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的缸沃。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼修械,長吁一口氣:“原來是場噩夢啊……” “哼趾牧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肯污,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤翘单,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蹦渣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哄芜,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年柬唯,在試婚紗的時候發(fā)現(xiàn)自己被綠了认臊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡锄奢,死狀恐怖失晴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拘央,我是刑警寧澤涂屁,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站灰伟,受9級特大地震影響拆又,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一帖族、第九天 我趴在偏房一處隱蔽的房頂上張望义矛。 院中可真熱鬧,春花似錦盟萨、人聲如沸凉翻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽制轰。三九已至,卻和暖如春胞谭,著一層夾襖步出監(jiān)牢的瞬間垃杖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工丈屹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留调俘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓旺垒,卻偏偏與公主長得像彩库,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子先蒋,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Vuex 跨組件通信 一骇钦、是什么?有什么用竞漾?什么時候用眯搭? 文檔地址:https://vuex.vuejs.org/...
    Grayly吖閱讀 2,494評論 0 4
  • vuex是什么 每一個 Vuex 應用的核心就是 store(倉庫)∫邓辏“store”基本上就是一個容器鳞仙,它包含著你...
    十八歲的天空_b2de閱讀 1,043評論 0 0
  • 一、目錄 1笔时、vuex是什么,有什么用,什么時候用 2棍好、vuex的幾個核心概念 3、在項目配置vuex 4糊闽、在項目...
    涅槃no重生閱讀 1,334評論 0 2
  • 本文由作者鄭海波授權(quán)網(wǎng)易云社區(qū)發(fā)布梳玫。 背景 在組件化不斷深入的大環(huán)境下,無論使用哪種 MDV 框架都最終會遇到一個...
    43ce3d72fadb閱讀 392評論 0 0
  • 那一年對新中國的傳染病史來說右犹,絕對是不尋常得一年提澎。“非典”病毒爆發(fā)念链,從廣東開始盼忌,一直到全世界积糯。許多年后我都時常回想...
    青只閱讀 213評論 0 1