组件未刷新的反应路由器路由问题

时间:2020-05-24 16:32:13

标签: reactjs redux react-redux react-router history

我正在尝试在我的redux react应用中使用history.push方法。它工作正常,但问题是我的组件不会改变,你们知道为什么吗?

route.js:

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'
import { history } from '../helper/history'

export default class route extends React.Component {
  render() {
    return (
      <Provider store={store}>
        <Router history={history}>
          <Switch>
            <Route exact path="/login" component={Login} />
            <Route path="/error" component={Error} />
          </Switch>
        </Router>
      </Provider>
    )
  }
}

Redux action.js ,在其中称为历史记录,这是我调度动作的地方:

export const loginRequest = () => {
  return {
    type: userType.LOGIN_REQUEST,
  }
}

export const loginSuccess = () => {
  return {
    type: userType.LOGIN_SUCCESS,
  }
}

export const loginFailure = () => {
  return {
    type: userType.LOGIN_FAILURE,
  }
}

export const fetchUser = (data) => {
  return (dispatch) => {
    dispatch(loginRequest)
    axios
      .post(env.API_URL + 'login', { email: data.email, password: data.password })
      .then((res) => {
        dispatch(loginSuccess(res.data.user))
        history.push({
          pathname: '/profile',
        })
      })
      .catch((err) => {
        dispatch(loginFailure(error))
      })
  }
}

1 个答案:

答案 0 :(得分:1)

在提供history道具时,应使用Router。参见https://codepen.io/farisk/pen/zYvXvoxthisRouter

import { Router, Route, Switch } from 'react-router-dom'

代替

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'

相关问题