我可以重定向到.then
而不是console.log
吗?
axios
.post('/api/users/login', user)
.then(res => console.log(res.data))
.catch(err => this.setState({ errors: err.response.data }))
有可能吗?如果可以,怎么办?
答案 0 :(得分:1)
您的问题不是关于reactjs或axios,它只是纯JavaScript。 使用此=> location.href
答案 1 :(得分:0)
U可以使用:location.window.href
通常我使用react-router重定向
history.js
import createHistory from 'history/createBrowserHistory';
export default createHistory()
Root.jsx
import { Router, Route } from 'react-router-dom'
import history from './history'
<Router history={history}>
<Route path="/test" component={Test}/>
</Router>
another_file.js
import history from './history'
history.push('/test') // this should change the url and re-render Test component
参考:https://github.com/ReactTraining/react-router/issues/3498
答案 2 :(得分:0)
我建议您不要在操作内部执行辅助操作(在这种情况下为axios调用)。这是因为您最终会将这些调用添加到redux thunk / saga或某些其他中间件中。
我遵循的模式是您返回promise,并在组件(或容器)内添加重定向逻辑。以下是它的好处:-
现在,可以说您可以通过以下方式使用上述逻辑:-
// Component code
import { browserHistory } from 'react-router;
class TestContainer extends React.Component {
auth = () => {
login()
.then(() => {
browserHistory.push("/addUser");
})
.catch(() => {
// Show alert to user;
})
}
render () {
return (
<div>
<button onClick={this.auth}>Auth</button>
</div>
);
}
}
// Action code
const login = () => {
return axios
.post('/api/users/login', user);
}