我正在嘗試使用redux
,react-engine
和react-router
。從REDX內部訪問服務器的道具?
我遇到的問題或問題是react-engine
提供了來自服務器的props
的對象。如何從我的ProvidedApp
中訪問這些道具?
ProvidedApp.js
import React from 'react'
import { connect, Provider } from 'react-redux'
import App from './app'
import { mapStateToProps, mapDispatchToProps, store } from './redux-stuff'
// Connected Component
let ConnectedApp = connect(
mapStateToProps,
mapDispatchToProps
)(App)
let ProvidedApp =() => (
<Provider store={store}>
<ConnectedApp/>
</Provider>
)
export default ProvidedApp
Routes.js
import React from 'react'
import { Router, Route } from 'react-router'
import Layout from './views/Layout'
import App from './views/ProvidedApp'
module.exports = (
<Router>
<Route path='/' component={Layout}>
<Route path='/app' component={App} />
<Route path='/app/dev' component={App} />
</Route>
</Router>
)
我也覺得我的配置是有點靠不住,我不能讓Provider
工作任何其他方式。如果有一種方法可以讓Provider
包裹Router
,我很樂意讓它工作。
這裏是什麼樣子,當我移動Provider
上述Router
ConnectedApp.js
import React from 'react'
import { connect, Provider } from 'react-redux'
import App from './app'
import { mapStateToProps, mapDispatchToProps} from './redux-stuff'
let ConnectedApp = connect(
mapStateToProps,
mapDispatchToProps
)(App)
export default ConnectedApp
Routes.js一些代碼
import React from 'react'
import { Provider } from 'react-redux'
import { Router, Route } from 'react-router'
import { store } from './redux-stuff'
import Layout from './views/Layout'
import App from './views/ConnectedApp'
module.exports = (
<Provider store={store}>
<Router>
<Route path='/' component={Layout}>
<Route path='/app' component={App} />
</Route>
</Router>
</Provider>
)
我得到這個錯誤:
Could not find "store" in either the context or props of "Connect(App)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(App)".
更新
我發現我可以從他的代碼中ProvidedApp
訪問我的第一個例子。但我不知道我應該如何將它傳遞給Redux。
let ProvidedApp = (props) => {
console.log(props)
return (
<Provider store={store}>
<ConnectedApp/>
</Provider>
)
}
錯在當你'<提供者儲存= {存儲}> ... '? –
VonD
@VonD此錯誤:'無法在「連接(應用)」的上下文或道具中找到「存儲」。將根組件包裝在中,或明確地將「store」作爲道具傳遞給「Connect(App)」。 –
ThomasReggi
@VonD更新了我的代碼的外觀: – ThomasReggi