我有兩個reduer,一個負(fù)責(zé)用戶登陸的相關(guān)state :loginReducer.js
另一個負(fù)責(zé)登錄后的socket聊天:chatReducer.js,
登陸成功后可以看到loginReducer里面的userLogin已經(jīng)發(fā)生了變化,此時頁面進(jìn)入了聊天頁面,但是問題來了,只要發(fā)出任意一個chatReducer的action,loginReducer里面的信息就會丟失,變成初始狀態(tài)的initState,
如下圖:
loginReducer.js
const initState={
islogining:false,
loginUser:{
name:'',
messagesUnRead:[],
},
loginSuccess:false,
isRegisterNewUser:false } function loginReducer(state=initState, action={}) {
switch (action.type) {
case 'REGISTERING_NEWUSER':
return Object.assign({},state,{isRegisterNewUser:true})
case 'REGISTERING_NEWUSER_SUCCESS':
return Object.assign({},state,{isRegisterNewUser:true})
case 'REGISTERING_NEWUSER_FAILURE':
return Object.assign({},state,{isRegisterNewUser:true})
case 'FETCHING_PEOPLE':
return Object.assign({},state,{islogining:true})
case 'FETCHING_PEOPLE_SUCCESS':
console.log(action.data)
return Object.assign({},state,{loginUser:action.data,islogining:false,loginSuccess:true})
case 'FETCHING_PEOPLE_FAILURE':
return Object.assign({},state,{islogining:false})
default:
return initState
} }
export default loginReducer;
chatReducer.js
users:[//用戶列表
{ name:'admin',isOnline:false,profilePhoto:logo,lastMessage:'你說啥??'},
{ name:'張三',isOnline:true,profilePhoto:logo,lastMessage:'好的,我知道了'},
{ name:'李四',isOnline:false,profilePhoto:logo,lastMessage:'好的,我知道了'},
{ name:'王五',isOnline:false,profilePhoto:logo,lastMessage:'小伙子,不錯啊'}],
loadMessageType:'current',//是否當(dāng)前聊天或者歷史記錄
messageType:'current',//當(dāng)前對話框
messages:{
current:[
{sender:'admin',msg:'第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息第一條測試消息',sendTime:'2018-3-15',receiver:[],receiveTime:''},
{sender:'李四',msg:'測試測試測試',sendTime:'2018-3-16',receiver:[],receiveTime:''}
],
history:[]
},
newMessage:'',//正在輸入的新消息,
tabListNoTitle : [{
key: 'current',
tab: '當(dāng)前信息',
}, {
key: 'history',
tab: '歷史記錄',
}, ],
currentUser:{}, } function chatReducer(state=initState, action={}) {
switch (action.type) {
case 'LOADING_HISTORY_MESSAGE':
return Object.assign({},state,{loadMessageType:'history'})
case 'LOADING_HISTORY_MESSAGE_SUCCESS':
let messages=Object.assign({},state.messages)
let newMessage=Object.assign({},messages,{history:action.messages})
return Object.assign({},state,{messages:newMessage})
case 'LOAD_CURRENT_MESSAGE':
return Object.assign({},state,{loadMessageType:'current'})
case 'NEW_MESSAGE_CHANGE':
return Object.assign({},state,{newMessage:action.msg})
case 'GET_NEW_MESSAGE':
messages=Object.assign({},state.messages)
messages.current.push(action.msg)
newMessage=Object.assign({},messages)
return Object.assign({},state,{messages:newMessage})
case 'SET_CURRENT_USER':
return Object.assign({},state,{currentUser:action.user})
default:
return initState
} }
export default chatReducer; ```
reducer.js
import {combineReducers} from 'redux';
import loginReducer from './reducers/loginReducer'
import chatReducer from './reducers/chatReducer'
export default combineReducers({
loginReducer,chatReducer
})
store.js
import { createStore, applyMiddleware } from 'redux';
import reducer from './reducer';
import logger from 'redux-logger';
import middlePromise from 'redux-promise';
import thunkMiddleware from 'redux-thunk';
const store = createStore(reducer,applyMiddleware(thunkMiddleware,middlePromise,logger));
export default store;
請問各位有遇到相同的情況嗎?怎么解決的,求教。。。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。