2017-01-02 89 views
1

我有一个支持表单,提交后从API传递成功消息。在表单组件类中,我得到了从Reducer获取值的mapStateToProps()。如何根据状态处理React-Redux中的通知?

function mapStateToProps(state) { 
    return { contact_form: state.contact_form.all} 
} 

,并显示通知用户,我做

if(this.props.contact_form.data) { 
     notify_banner(" Your request is submitted successfully.","success",5000); 
     } 

问题这种方法是,状态尚未消失的。因此,无论何时用户转到支持表单页面,该状态仍然存在时会显示此警报。

我在看到这个thread清除状态后,执行一个操作,但这将清空状态和警报将不会显示。

那么,我该如何通知用户一次?

+0

您可以在'componentWillMount'或'componentWillUnmount'上派发一个RESET动作。 –

+0

你可以添加一个标志到你的状态,它会告诉你它是否已经被“告知”(该消息)并依赖于它,显示与否;) – MariuszJasinski

+0

如果用户被允许提交表单,一旦。如果用户想要提交多次?那么这个标志会产生复杂性。 –

回答

1

一种方法是在用户提交表单后发送成功操作。在这里,我拿flag = true表示表单被提交。因此,您可以通过此检查来显示横幅通知。

if(this.props.contact_form.flag) { 
    notify_banner("Success"); 
    //disptach reset action here 
} 

通知后,立即通过dipatching resetState操作将contact_form.flag重置为false。

export function resetState() { 
    const request = { 
    flag: false 
    }; 

    return { 
     type: CONTACT_FORM, 
     payload: request 
    }; 
}