我正在使用reducer接收用户模型。第一个值为null(因为这是Reducers的行为方式 - 它意味着它正在等待并且还没有收到模型),第二个值是User模型本身。
当我得到第一个空值时,组件重定向到“IsNotSetUp”路径,但是当我得到第二个值时,组件将isUserSetUp prop显示为TRUE,但它不会重定向到“IsSetUp”路径?发生了什么事?
class App extends Component {
state = { isUserSetUp: false }
componentWillReceiveProps(nextProps) {
if (nextProps.auth && nextProps.auth.isProfileSetUp) {
this.setState({ isUserSetUp: true }, function() {
console.log("This is when we receive the User model from the reducer");
});
}
else {
this.setState({ isUserSetUp: false });
}
}
componentDidMount() {
this.props.fetchUser();
}
render() {
return (
<div className="container">
<BrowserRouter>
<div>
<Header />
<Route exact path="/" component={Landing} />
<Route exact path="/dashboard" component={Dashboard} />
{/* Profile Set up */}
<Route exact path="/setup" render={() =>
(
this.state.isUserSetUp ? (
<Redirect to={'/IsSetUp'} />
) : (
<Redirect to={'/IsNotSetUp'} />
)
)}
/>
</div>
</BrowserRouter>
</div>
);
}
};
出了什么问题?什么是变通方法?我采取了什么更好的建议路径?
提前致谢,美丽;)
答案 0 :(得分:0)
您可以使用hashHistory
来实现此目的。
import {
hashHistory
} from 'react-router';
/**
* [update route of the application]
* @param {String} route [new route of the application]
*/
const updateRoute = (route) => {
hashHistory.push(route);
};
updateRoute('/IsSetUp');
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react-dom.min.js"></script>
如果有帮助,请告诉我。