结合 React Router 和 Redux 使我的重定向 KO

恶臭

我必须结合使用 Redux 和 React Router。我首先尝试单独反应路由器,当我单击我的图像时,我被正确重定向。

我遵循了redux 教程,现在当我单击我的图像时,我更改了地址(例如:http://localhost:3000/contact)但没有任何显示,就好像组件是空的一样。

根.js

import React from 'react';
import './index.css';
import PropTypes from 'prop-types'
import ReactDOM, { BrowserRouter as Router, Route, Link, Switch } from 'react-router-dom'
import App from './App'
import Users from './users'
import Book from './Book'
import Notfound from './notfound'

import { Provider } from 'react-redux';
import Store from './redux/Store/store'

import * as serviceWorker from './serviceWorker';

const Root = ({ store }) => (
    <Provider store = { Store }>
      <Router>
        <div>
          <Switch>
              <Route exact path="/:filter?" component={App} />
              <Route path="/users" component={Users} />
              <Route path="/book" component={Book} />  
              <Route path='/manual' component={() => { window.location = 'https://------'; return null;} }/>
              <Route path='/contact' component={() => { window.location = 'https://-------'; return null;} }/>
              <Route component={Notfound} />
          </Switch>
        </div>
      </Router>
    </Provider>
)

Root.propTypes = {
  store: PropTypes.object.isRequired
}
serviceWorker.unregister();
export default Root

索引.js:

import React from 'react'
import { render } from 'react-dom'
import { createStore } from 'redux'
import myReducer from './redux/Reducers/myReducer'
import Root from './Root'

const store = createStore(myReducer)

render(<Root store={store} />, document.getElementById('root'))

应用程序.js:

import React from 'react'
import { Route, Link, Redirect, withRouter, BrowserRouter as Router } from 'react-router-dom'
import logo from './images/logo.png';
import book from './images/book.png';

class App extends React.Component {
  constructor() {
    super();

    this.state = {
      date: new Date()
    };
  }

  render() {
    const { date } = this.state;
    return (
      <div>
          <img src={logo} />
          <img src={book} onClick={() => this.props.history.push('/book')}/>
          <img src={call} onClick={() => this.props.history.push('/contact')}/>
      </div>
    )
  }

}
export default App

你知道有什么问题吗?

林施拉格

我注意到的一些事情:

使用反应路由器时,您不应该使用window.location重定向,因为这会重新加载整个页面。<Redirect>react-router组件在这里是更好的选择。

此外,您不应该component<Route>-component 上的render道具用于实际上不是组件的东西,因为有道具(更多关于这里)。

此外:<Route exact path="/:filter?" component={App} />不会工作,因为:filter?正在寻找一个变量并且exact正在寻找完全匹配。此外,您可能不应该将灵活的放在第一位,因为它会匹配您投入的每条路线。因此,以下所有路线实际上都无法到达。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章