У меня есть требование для отображения предупреждения о тайм-ауте после 13 минут бездействия и окончания сеанса через 15 минут, если пользователь не предпринимает никаких действий. Мне нужно добиться этого с помощью реакции. Я проверил время реакции на https://www.npmjs.com/package/react-timeout#react-classic-verbose, но это не помогло. Если кто-нибудь знает способ сделать это, пожалуйста, поделитесь со мной.Модифицирование таймаута сеанса с использованием реакции
ответ
Вы можете создать более высокий компонент порядка, как это и может передать ребенка компоненту через компонент высшего порядка
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)} />
В этом компоненте кода будет страница, где вы хотите добавить эту функциональность.
Спасибо за ответ @Anshul Jain. Это был старый вопрос, и я больше не работаю над этим. Но, спасибо за такой продуманный ответ. – abhi
Спасибо, что спасли мой день. Так держать. –
- 1. Увеличение таймаута сеанса reCAPTCHA
- 2. Проверка таймаута сеанса в JavaScript
- 3. Запомните страницу после таймаута сеанса
- 4. Событие таймаута сеанса в magento
- 5. Обработка таймаута сеанса на клиенте
- 6. Предотвращение таймаута сеанса с помощью javascript
- 7. Обработка Ajax после таймаута сеанса
- 8. Viewstate уничтожено после таймаута сеанса
- 9. Как избежать таймаута сеанса в Android
- 10. Как перенаправить на страницу после таймаута сеанса?
- 11. Недопустимый токен аутентификации после таймаута сеанса
- 12. Как предупредить ashx от сброса таймаута сеанса?
- 13. ASP.net Страница сеанса таймаута не работает
- 14. Выход из системы безопасности после таймаута сеанса
- 15. Весна: Вызов метода до таймаута сеанса
- 16. Исключить некоторые URL-адреса из таймаута сеанса
- 17. модифицирование цвета с цветовым балансом
- 18. После таймаута сеанса, куда JBoss перенаправляет пользователей?
- 19. Как перенаправить пользователя после таймаута сеанса
- 20. Недостатки для больших значений таймаута сеанса?
- 21. Движение мыши для таймаута сеанса в GWT
- 22. Обновление сеанса ASP.net после таймаута по умолчанию
- 23. Что устанавливает System.Security.Principal.Identity.IsAuthenticated после таймаута сеанса?
- 24. Установка таймаута сеанса в Odoo 8
- 25. Время ожидания состояния сеанса против таймаута ожидания
- 26. Yii 1.1x выводит пользователя до таймаута сеанса
- 27. Модифицирование Google Chrome немного
- 28. Краткий отчет: Модифицирование Решение
- 29. Модифицирование JobDataMap в Quartz.NET
- 30. Ошибка таймаута сеанса с помощью Twitter OAuth flow с использованием ShareKit на iOS
Сверху моей головы, почему бы не определить свойство 'active' в' 'состоянии компонента. Установите тайм-аут через 'setTimeout', чтобы установить' active' в 'false' после 13 минут бездействия. Каждый раз, когда пользователь перемещает мышь/касается экрана, сброс таймаута. В главном компоненте приложения вы можете сделать что-то подобное, чтобы завершить сеанс. –