Javascript ReactJS路由器v4 Mobx-路由器不会重新渲染组件吗?
我使用mobxJavascript ReactJS路由器v4 Mobx-路由器不会重新渲染组件吗?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我使用mobxProvider来提供存储,方法是包装路由器 <Provider {...stores}> <BrowserRouter > <App /> </BrowserRouter> </Provider> validateUserRoute只是一个确保用户经过身份验证的函数,如果没有,则重定向到主页 const ValidatedUserRoute = ({component: Compone
Provider
来提供存储,方法是包装路由器
<Provider {...stores}>
<BrowserRouter >
<App />
</BrowserRouter>
</Provider>
validateUserRoute
只是一个确保用户经过身份验证的函数,如果没有,则重定向到主页
const ValidatedUserRoute = ({component: Component}, store, ...rest) => (
<Route
{...rest}
render={props =>
store.validated ? (
<Component {...props} />) : (
<Redirect to={{
pathname: "/"
}}
/>
)
} />
);
export default ValidatedUserRoute
const ValidatedUserRoute=({component:component},store,…rest)=>(
商店验证(
) : (
)
} />
);
导出默认ValidateUserRoute
问题
当我点击链接时,我的URL确实会改变,但组件不会呈现,就像页面在加载网页时被卡在最初加载的组件上一样
<Link to="/">Home</Link>
<Link to='/login'>Log In</Link>
主页
登录
如果您正在使用新的反应路由器dom
。然后,您必须使用库提供的带路由器的,
Hoc,并用它包装您的组件
import {withRouter} from 'react-router-dom'
const ValidatedUserRoute = ({component: Component}, store, ...rest) => (
<Route
{...rest}
render={props =>
store.validated ? (
<Component {...props} />) : (
<Redirect to={{
pathname: "/"
}}
/>
)
} />
);
export default withRouter(ValidatedUserRoute)
从“react router dom”导入{withRouter}
const ValidatedUserRoute=({component:component},store,…rest)=>(
商店验证(
) : (
)
} />
);
使用路由器导出默认值(ValidateUserRoute)
哪个组件负责执行路由。如果您正在使用新的
react router dom
,请用路由器将其包装在中。然后,您必须使用库提供的带路由器的,
Hoc,并用它包装您的组件
<Provider {...stores}>
<BrowserRouter >
<App />
</BrowserRouter>
</Provider>
import {withRouter} from 'react-router-dom'
const ValidatedUserRoute = ({component: Component}, store, ...rest) => (
<Route
{...rest}
render={props =>
store.validated ? (
<Component {...props} />) : (
<Redirect to={{
pathname: "/"
}}
/>
)
} />
);
export default withRouter(ValidatedUserRoute)
从“react router dom”导入{withRouter}
const ValidatedUserRoute=({component:component},store,…rest)=>(
商店验证(
) : (
)
} />
);
使用路由器导出默认值(ValidateUserRoute)
哪个组件负责执行路由。用路由器将其包装在中
我必须用此包装所有组件还是仅包装包含路由的组件?所有导致路由更改的组件。它也可以是标题
。我必须用它包装所有组件还是只包装包含路由的组件?所有导致路由更改的组件。它也可以是标题
。
<Provider {...stores}>
<BrowserRouter >
<App />
</BrowserRouter>
</Provider>