我必须结合使用 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] 删除。
我来说两句