我有一個要求,如果用戶不採取任何行動,則在13分鐘的非活動狀態和結束會話之後15分鐘後顯示超時警告模式。我需要使用reactjs來實現這一點。我檢查了https://www.npmjs.com/package/react-timeout#react-classic-verbose的react-timeout,但這並沒有幫助。 如果有人知道如何做到這一點,請與我分享。使用反應會話超時警告模式
2
A
回答
4
你可以這樣創建一個高階組件,可以通過高階組件傳遞子組件
HOC:
`//代碼
export default function(ComposedClass) {
class AutoLogout extends React.Component {
constructor(props) {
super(props);
this.state = {
warningTime: 1000 * 60 * 10,
signoutTime: 1000 * 60 * 15,
};
}
componentDidMount() {
this.events = [
'load',
'mousemove',
'mousedown',
'click',
'scroll',
'keypress'
];
for (var i in this.events) {
window.addEventListener(this.events[i], this.resetTimeout);
}
this.setTimeout();
}
clearTimeoutFunc =() => {
if (this.warnTimeout) clearTimeout(this.warnTimeout);
if (this.logoutTimeout) clearTimeout(this.logoutTimeout);
};
setTimeout =() => {
this.warnTimeout = setTimeout(this.warn, this.state.warningTime);
this.logoutTimeout = setTimeout(this.logout, this.state.signoutTime);
};
resetTimeout =() => {
this.clearTimeoutFunc();
this.setTimeout();
};
warn =() => {
window.alert("You will be logged out automatically in 1 minute")
console.log('You will be logged out automatically in 1 minute.');
};
logout =() => {
// Send a logout request to the API
console.log('Sending a logout request to the API...');
this.destroy();
};
destroy =() => {
//clear the session
browserHistory.push('/');
window.location.assign('/');
};
render() {
return (
<div>
<ComposedClass {...this.props} />
</div>
);
}
}
}
`
你可以將此HOC包裝到所有您希望因爲處於非活動狀態而警告用戶的組件中,在路由文件中
要添加此功能<Route path="/test" component={HOC(comonent)} />
在上面的代碼組成部分將是頁。
+0
感謝@Anshul Jain的回覆。這是一個古老的問題,我不再努力了。但是,謝謝你這樣詳細的答覆。 – abhi
+0
謝謝它拯救了我的一天。保持。 –
相關問題
- 1. 會話超時警告對話框MVC
- 2. ASP.NET MVC中的會話超時警告
- 3. PHP會話超時代碼警告
- 4. ASP.NET MVC2實現會話超時警告
- 5. 在ASP.NET中的會話超時警告
- 6. showmodaldialog會話超時警報
- 7. 在春季會話超時前警告用戶mvc
- 8. 會話類警告
- 9. 使用SqlServer模式時會話超時不起作用
- 10. ASP的可靠性會話超時警告
- 11. 現有的JavaScript框架來處理會話超時警告?
- 12. 在會話超時之前顯示彈出警告
- 13. 抑制原生android會話超時警告
- 14. 帶有警告窗口的ASP.NET會話超時
- 15. Python交互式庫(pymidas)會話警告
- 16. 會話啓動時的警告消息
- 17. PHP會話警告問題
- 18. PHP cli會話警告
- 19. session_start();會話cookie警告
- 20. ASP.NET MVC3 - 反CSRF和會話超時
- 21. 反應天然PullToRefreshViewAndroid警告
- 22. 反應警告渲染()
- 23. 如何警告用戶他們的網絡會話即將超時?
- 24. 會話超時
- 25. 會話超時
- 26. 會話超時
- 27. 會話超時
- 28. 會話超時
- 29. 會話超時
- 30. 警告和擴展用戶會話
爲什麼不在組件的'state'中定義'active'屬性?在不活動13分鐘後,通過'setTimeout'設置一個超時設置'active'爲'false'。每次用戶移動鼠標/觸摸屏幕,重置超時。在主應用程序組件中,您可以執行類似的操作來結束會話。 –