reactjs - 路由器不渲染
问题描述
我从以前运行良好的项目中复制了存储/路由器解决方案。然后更新了 redux/router/dom 依赖项,进行了一些更改,例如。删除了 IndexRoute 并使用了 createBrowserHistory。在开发中。它显示该Provider
组件已呈现但不呈现任何其他组件的工具。
index.js
import React from 'react';
import { render } from 'react-dom';
import Foo from './components/Foo ';
import Bar from './components/Bar ';
import Components from './components/App'
import { BrowserRouter as Router, Route, IndexRoute } from 'react-router-dom';
import { Provider } from 'react-redux';
import store, { history } from './store';
const router = (
<Provider store={store}>
<Router history={history}>
<Route exact path="/" exact component={Components.MainConnectedWithProps} />
<Route exact path="/foo" component={Components.FooConnectedWithProps} />
<Route exact path="/bar" component={Components.BarjkaConnectedWithProps} />
</Router>
</Provider>
)
render(router, document.getElementById('root'));
//render(<Foo />, document.getElementById('root')); works just fine
应用程序.js
import * as actionCreators from '../actions/actionCreators'
import {bindActionCreators} from 'redux'
import Main from './Main'
import Foo from './Foo '
import Bar from './Bar '
import { connect } from 'react-redux'
function mapStateToProps(state) {
return {
sampleData: state.sampleData
}
}
function mapDispachToProps(dispatch){
return bindActionCreators(actionCreators, dispatch)
}
export default {
MainConnectedWithProps : connect(mapStateToProps, mapDispachToProps)(Main),
FooConnectedWithProps: connect(mapStateToProps, mapDispachToProps)(Foo),
BarConnectedWithProps: connect(mapStateToProps, mapDispachToProps)(Bar)
}
store.js
import { createStore } from 'redux'
import {syncHistoryWithStore} from 'react-router-redux'
import { createBrowserHistory } from 'history'
import rootReducer from './reducers/index';
const defaultState = {
sampleData: sampleData
}
const store = createStore(rootReducer, defaultState)
export const history = syncHistoryWithStore(createBrowserHistory(), store);
export default store;
包.json
"react-dom": "^17.0.1",
"react-redux": "^4.4.10",
"react-router": "^6.0.0-beta.0",
"react-router-dom": "^6.0.0-beta.0",
"react-router-redux": "^4.0.8"
我对 React 很陌生,所以这可能是一个愚蠢的错误。提前感谢大家。
编辑:我创建了具有主要功能的沙箱 - 使用 redux 在一个“/”路径和具有“/foo”或“/bar”路径的特定组件上渲染许多组件。BrowserRouter
更改为Router
与history
对象后,它工作得很好。https://codesandbox.io/s/old-dawn-spggs?file=/src/components/App.js
但是当我在 VS Code 上尝试相同的操作时,它给出了prop location ismarked as required in Router
,但它的值是未定义的错误,Router history={history}
并且没有错误,但没有呈现任何内容<BrowserRouter />
编辑2:我使用了与codesandbox中完全相同的历史、反应、redux依赖版本,它在VS Code中也有效。但是Link
现在好像不行了。当我手动键入“/ bar”时,它会呈现Bar
,但是当我单击Link path="/bar"
它时,它什么也不会呈现。
编辑 3:我仔细查看了评论中建议的链接,解决方案是将history
依赖关系降级到 4.7.1。
另外,使用 this MainConnectedWithProps
, FooConnectedWithProps
...对于每个单独的组件传递道具是一个好主意吗?我曾经使用过,React.CloneElement
但我想这不是一件好事,因为IndexRoute
它已经消失了?
解决方案
推荐阅读
- r - 如何在 R 中使用循环和并行获得相同的结果?
- java - 浮动操作栏菜单出现在每个片段中
- azure-active-directory - 无法在 Azure AD Web App 上的重定向 URI 中设置 HTTP URI
- gstreamer-1.0 - gst-launch-1.0 - rtspsrc 音频/视频问题
- c - 使用关键参数时 main 之前的分段错误
- javascript - 数组的第一个元素是第一个最小值,第二个元素是第一个最大值,依此类推
- linux - 当二进制文件未使用 -g 编译时,如何获得 perf annotate 以显示源代码?
- javascript - Shopify 显示所选变体库存动态
- python - 如何使用 Python 单击 MS Access 上的按钮
- python - 当循环中的键值等于键Python时,在for循环之外访问键的值