如题:这样一个交互,在一个表单异步提交成功完后,希望清空页面上的表单控件;1.表单信息都是存在storepostDraft中,初始化进入时反向渲染,页面如下: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('已经在申请会议中');}dispatch(startPost());returnnewPromise((rev)=>{//模拟ajaxsetTimeout(()=>{rev();},1500);}).then(()=>{dispatch(endPost());dispatch(addMeeting(meetingInfo));dispatch(clearMeeting());//清空store中的postDraft字段},()=>{dispatch(endPost());});};}现在遇到的问题是,在提交成功后stroe里面的postDraft字段已经被清空,但是前端页面表单里面还是有数据的。分析是因为页面本地的state没有和store中的数据反向同步,对于这个问题一直没有特别好的方案:action中的没有直接调前端页面的清空函数,如submitMeeting(meeting,clearCallback);这个clearCallback调用前端页面的清空函数;在页面componentWillReceiveProps中检测store中的数据变化,一旦postDraft字段清空了,就调用前端页面的clearCallback;但是这个方案出发不稳定,会在表单为空的时候也会触发;请问对于这个问题,麻友们一般是怎么处理;感谢
三国纷争
有只小跳蛙
相关分类