如何根据路由器中的条件发送操作
问题描述:
如何根据条件以正确的方式发送操作: 我做了以下操作,但出现语法错误。如何根据路由器中的条件发送操作
const PrivateRoute = ({ component: Component, ...rest }) => {
<Route {...rest} render={props => (
firebase.auth().onAuthStateChanged((user) => user
?(
store.dispatch(actions.login(user.uid));
<Component {...props}/>
)
:(
store.dispatch(actions.logout());
<Redirect to={{
pathname: '/login',
state: { from: props.location }
}}/>
)
)
)}/>
}
答
普通括号((..)
)让你返回一个值。这就是为什么你的语法错了。你应该做下面的事情。
const PrivateRoute = ({ component: Component, ...rest }) => {
// return the Route component
return <Route {...rest} render={props => {
firebase.auth().onAuthStateChanged((user) => {
if(user) {
// run dispatch
store.dispatch(actions.login(user.uid));
// return component
return <Component {...props} />
} else {
// run dispatch
store.dispatch(actions.logout());
// return component
return <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
}
});
}} />
}