【问题标题】:BrowserRouter doesnt accept child routes passed as propsBrowserRouter 不接受作为道具传递的子路由
【发布时间】:2017-12-28 23:29:15
【问题描述】:

我正在使用带有 react-redux 的 react-router 4。但现在我无法呈现任何页面。我在点击 URL 时收到 404。但控制台没有显示任何错误。可能是我与 react-router 版本 3 勾结了一些东西,但无法得到它是什么?这里还有一件事是我的一个减速器在商店注册时被调用,尽管我没有在其中添加减速器。还有更多的事情是在 v4 中不推荐使用 IndexRoute?

这是我的 config.js

import React from 'react'
import { render } from 'react-dom'
import { createStore, applyMiddleware,compose } from 'redux'
import { Provider } from 'react-redux'
//import rootReducer from './reducers'
import createLogger from 'redux-logger'
import thunk from 'redux-thunk'
import {BrowserRouter} from 'react-router-dom'
import App from './containers/App'
import promise from "redux-promise-middleware"
import logger from "redux-logger"
import {fetchUsers} from "./action/UserAction"
import {fetchChart} from "./action/ChartAction"
import {fetchNames} from "./action/SearchAction"
import reducer from "./reducers"
import routes from "./routes"

const middleware = applyMiddleware(promise(), thunk, logger())
//const store= createStore(reducer,middleware)
const store= createStore(middleware)
//store.dispatch(fetchUsers());
//store.dispatch(fetchChart());
render(
  <Provider store={store}>
    <BrowserRouter  routes={routes} />

  </Provider>,
  document.getElementById('root')
)

我的路由.js

import App from "./pages/App"
import Users from "./pages/Users"
import Charts from "./pages/Charts"
import React from "react"
import { Route } from "react-router-dom"
export default (

  <Route path="/" component={App}>
    {/* <IndexRoute component={Users} /> */}
    <Route path="/" component={Users}/>
    <Route path="charts" name="charts" component={Charts}/>
  </Route>
);

我的 App.js

import {Link} from "react-router"
const App = () =>(

<div>
<h1> this is main page </h1>
<Link to="charts">charts</Link>
</div>
)

export default App

我的图表.js

const Chart = () => (
    <h1> this is chart </h1>
)

export default Chart

我的 Users.js

const User = () =>(
    <div>
    <h1> this is user </h1>
    </div>
)

export default User

reducer 是被调用的

import  _intialState from "../api/names.js"
const intialValues = {names:['x','y','z','a','b','c','d','e','f'],
searchText:''}
export default function reducer(
    state=intialValues,
    action){
    console.log("search reducer",state)
    switch(action.type){
        case "SEARCH":{
         return Object.assign({},state,{searchText:action.payload})
        }
    default:
        return state;
    }

} 

【问题讨论】:

  • 我在文档中没有看到任何名为 BrowserRouter 的 prop,这应该可以工作 &lt;BrowserRouter &gt;{routes}&lt;/BrowserRouter&gt;
  • 确实如此。谢谢。我到处找

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


【解决方案1】:

根据react-router documentation,没有称为routesBrowserRouter 的道具

相反,您可以将到BrowserRouter 的路由指定为子级。

子节点:节点

要渲染的单个子元素。

像这样使用它

<BrowserRouter >
    {routes}
</BrowserRouter>

【讨论】:

  • 我们应该在这使用索引路由吗?
  • IndexRoute 不适用于 React-router v4。请参阅此答案以了解 v4 中的嵌套路由 stackoverflow.com/questions/44452858/…
  • 好的..谢谢现在我得到了我的主页但没有重定向到其他页面我想我应该把它放在单独的帖子中
猜你喜欢
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多