我的主页上有混合内容。用户特定内容是他们自己的内容旁边的编辑按钮。 当用户通过注销路由注销时,将执行此代码:
import React from 'react'; // needed
import ReactDOM from 'react-dom';
import Home from './components/layout/Home.js';
import Login from './Login/Login';
import PollDetails from './components/layout/PollDetails.js';
import EditPoll from './components/presentation/EditPoll.js';
import CreatePoll from './components/presentation/CreatePoll';
import Container from './components/containers/Container.js';
import {Route,Router,browserHistory,IndexRoute} from 'react-router';
import Auth from './utils/Auth';
const mountNode = document.getElementById('root');
ReactDOM.render(
<Router history={browserHistory}>
<Route path="/" component={Container} >
<IndexRoute component={Home} />
<Route path="login" component={Login} />
<Route path="logout" onEnter={(nextState, replace) => {
Auth.deauthenticateUser();
console.log('Logging out src/app.js');
Auth.clearCookie();
// change the current URL to /
replace('/');}} />
<Route path="Polldetailfull/:id" component={PollDetails} />
<Route path="Editthepoll/:id" component={EditPoll} />
<Route path="createPoll" getComponent={(location, callback) => {
if (Auth.isUserAuthenticated()) {
callback(null, CreatePoll);
} else {
callback(null, Home);
}
}} />
</Route>
</Router>,mountNode);
但是,replace('/');将您带回到主页,但不会重新渲染任何组件。请注意,此处没有要更改的状态。我需要一个状态来强制重新渲染吗?
请注意,如果您在浏览器上按刷新,则会发生所需的行为。我尝试查看 React Router 的代码,但找不到太多有关事件的信息。说实话,我并没有完全理解 onEnter={(nextState, Replace) =>
最佳答案
您可以使用location.reload()
使其重新渲染
关于javascript - 获取 React 路由器以导致重新渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46266691/