第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Redux 的異步Action中,如何回調(diào)頁(yè)面中的交互

Redux 的異步Action中,如何回調(diào)頁(yè)面中的交互

眼眸繁星 2019-05-24 10:56:13
如題:這樣一個(gè)交互,在一個(gè)表單異步提交成功完后,希望清空頁(yè)面上的表單控件;1.表單信息都是存在storepostDraft中,初始化進(jìn)入時(shí)反向渲染,頁(yè)面如下:constructor(props){super(props);this.state={start:'',end:'',title:'',content:'',};this.submit=this.submit.bind(this);this.handleChange=this.handleChange.bind(this);}...componentWillMount(){const{postInfo:{postDraft}}=this.props;this.setState(postDraft);}表單提交成功后清空,action代碼如下:exportfunctionsubmitMeeting(meetingInfo){return(dispatch,getState)=>{if(shouldPost(getState().meeting)){returnconsole.log('已經(jīng)在申請(qǐng)會(huì)議中');}dispatch(startPost());returnnewPromise((rev)=>{//模擬ajaxsetTimeout(()=>{rev();},1500);}).then(()=>{dispatch(endPost());dispatch(addMeeting(meetingInfo));dispatch(clearMeeting());//清空store中的postDraft字段},()=>{dispatch(endPost());});};}現(xiàn)在遇到的問題是,在提交成功后stroe里面的postDraft字段已經(jīng)被清空,但是前端頁(yè)面表單里面還是有數(shù)據(jù)的。分析是因?yàn)轫?yè)面本地的state沒有和store中的數(shù)據(jù)反向同步,對(duì)于這個(gè)問題一直沒有特別好的方案:action中的沒有直接調(diào)前端頁(yè)面的清空函數(shù),如submitMeeting(meeting,clearCallback);這個(gè)clearCallback調(diào)用前端頁(yè)面的清空函數(shù);在頁(yè)面componentWillReceiveProps中檢測(cè)store中的數(shù)據(jù)變化,一旦postDraft字段清空了,就調(diào)用前端頁(yè)面的clearCallback;但是這個(gè)方案出發(fā)不穩(wěn)定,會(huì)在表單為空的時(shí)候也會(huì)觸發(fā);請(qǐng)問對(duì)于這個(gè)問題,麻友們一般是怎么處理;感謝
查看完整描述

2 回答

?
三國(guó)紛爭(zhēng)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

其實(shí)只要判斷postDraft是否處于從不為空到為空的轉(zhuǎn)變期間就好了。
也就是說,要在componentWillReceiveProps中,判斷this.props.postDraft不為空,且nextProps.postDraft為空。則執(zhí)行清空函數(shù)。
                            
查看完整回答
反對(duì) 回復(fù) 2019-05-24
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

react+redux并非是通過回調(diào)組件中的函數(shù)來實(shí)現(xiàn)更新的。
如果是使用的原生redux,那么需要在組件中訂閱store,也就是store.describe方法,一般是在DidMount或者DidUpdate中注冊(cè)。這個(gè)函數(shù)中就包含了一個(gè)回調(diào)函數(shù),用于組件在store中數(shù)據(jù)更新后進(jìn)行響應(yīng)式的處理。不知道你的代碼是不是缺了這一環(huán)節(jié)。
然后,一般在react中使用redux的技術(shù)棧會(huì)使用react-redux模塊。如果使用這個(gè)模塊,就不需要任何回調(diào)函數(shù),store中的所有數(shù)據(jù)更新都能通過props響應(yīng)到組件上。
                            
查看完整回答
反對(duì) 回復(fù) 2019-05-24
  • 2 回答
  • 0 關(guān)注
  • 669 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)