我想定義一個可以用來註銷用戶的URL(發送一個可以註銷用戶的動作)。我還沒有找到示例顯示如何實現派發事件的路線。如何處理Redux中的註銷路由?
回答
定義路線/authentication/logout
:
import React from 'react';
import {
Route,
IndexRoute
} from 'react-router';
import {
HomeView,
LoginView,
LogoutView
} from './../views';
export default <Route path='/'>
<IndexRoute component={HomeView} />
<Route path='/authentication/logout'component={LogoutView} />
<Route path='/authentication/login' component={LoginView} />
</Route>;
創建LogoutView
,它能將在componentWillMount
一個動作:
import React from 'react';
import {
authenticationActionCreator
} from './../actionCreators';
import {
connect
} from 'react-redux';
import {
pushPath
} from 'redux-simple-router';
let LogoutView;
LogoutView = class extends React.Component {
componentWillMount() {
this.props.dispatch(authenticationActionCreator.logout());
this.props.dispatch(pushPath('/'));
}
render() {
return null;
}
};
export default connect()(LogoutView);
的componentWillMount
回調分派兩個動作:
- 到dest羅伊用戶會話。
- 將用戶重定向到
IndexRoute
。
this.props.dispatch(authenticationActionCreator.logout());
this.props.dispatch(pushPath('/'));
這裏是這樣/logout
頁面更加當前實現:
import { Component, PropTypes } from 'react'
import { connect } from 'react-redux'
import { withRouter } from 'react-router'
import * as authActionCreators from '../actions/auth'
class LogoutPage extends Component {
componentWillMount() {
this.props.dispatch(authActionCreators.logout())
this.props.router.replace('/')
}
render() {
return null
}
}
LogoutPage.propTypes = {
dispatch: PropTypes.func.isRequired,
router: PropTypes.object.isRequired
}
export default withRouter(connect()(LogoutPage))
你能解釋一下什麼使得這是一個「更新」的實現? – Gajus
同意 - 我不會說這是一個更新的實現,而是一個使用'react-router'而不是'redux-simple-router'的替代實現。我認爲這會適合大多數使用「react-router」的用例使用幷包含最近推出的'withRouter'功能,爲什麼評論。 :-) – markyph
首先,請注意,這個實現可以使用或不使用redux-simple-router(順便說一句,前一天重命名爲react-router-redux)。如果你喜歡,你可以使用Redux風格的動作,但這不是必需的,恕我直言,它與原始路由問題並不嚴格相關。這個實現還利用了最近推出的'withRouter'高階組件使其更簡單:) –
這裏是/logout
頁最新實現:
import React, { Component } from "react";
import PropTypes from "prop-types";
import { connect } from "react-redux";
import { Redirect } from "react-router-dom";
import * as authActionCreators from "../actions/auth";
class LogoutPage extends Component {
static propTypes = {
dispatch: PropTypes.func.isRequired
};
componentWillMount() {
this.props.dispatch(authActionCreators.logout());
}
render() {
return (
<Redirect to="/" />
);
}
}
export default connect()(LogoutPage);
Works的:
"react": "^15.6.1",
"react-dom": "^15.6.1",
"react-redux": "^5.0.6",
"react-router-dom": "^4.2.2",
"prop-types": "^15.5.10",
- 1. Angular2:觸發當前路由防護 - 處理註銷操作
- 2. 如何處理Express.js路由?
- 3. 註銷時bash如何處理作業?
- 4. 如何處理註銷和重定向
- 5. IdentityServer4處理註銷正確
- 6. 在註銷時處理GCM
- 7. Firebase Cloud Messaging - 處理註銷
- 8. Symfony註銷處理程序
- 9. Spring Security中的註銷處理程序
- 10. ASP.NET MVC路由登錄/註銷問題
- 11. 路由以顯示註銷操作
- 12. 註銷路由中的Symfony 2不一致:註銷重定向到登錄?
- 13. 如何註銷net/http中的處理程序?
- 14. 如何處理MVC中的登錄和註銷4
- 15. 如何處理Caliburn.Micro中的登錄/註銷?
- 16. 骨幹路由器......如何處理URL
- 17. 路由器如何處理端口?
- 18. 如何處理Durandal MVC路由?
- 19. 如何防止OWIN處理路由
- 20. Kaminari如何將路由處理爲javascript
- 21. 如何處理這個路由?
- 22. 如何在redux操作中處理XMLHttpRequests?
- 23. Angular 2路由 - 如何處理路由匹配衝突?
- 24. 如何處理Asp.net MVC路由以及asp.net webform路由
- 25. 如果在routes.php中沒有定義路由,codeigniter處理路由
- 26. 自定義註釋和CDI注入消息路由/處理
- 27. 處理註銷的更好方法
- 28. 處理iPhone上的註銷功能
- 29. 路由器如何註銷HTTP基本/摘要認證?
- 30. 如何在註銷時清除MVC 3路由參數
爲什麼不直接發送鏈接點擊操作?不需要註銷的特殊路由 –
從用戶的角度來看,我希望能夠使用URL訪問註銷功能。 – Gajus
我猜如果你有Redux,你正在使用單頁面應用程序,但不能使用Javascript。那麼,有什麼關於它的暴露鏈接? –