gpt4 book ai didi

javascript - 从 redux 中访问服务器 Prop ?

转载 作者:行者123 更新时间:2023-11-29 16:03:45 24 4
gpt4 key购买 nike

我正在尝试使用 redux , react-engine , 和 react-router .

我的问题是 react-engine提供 props 的对象来自服务器的。如何从我的 ProvidedApp 中访问这些 Prop ?

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>
)
}

最佳答案

似乎我需要像这样包装 reducerstore 并将 ServerProps 传递到默认状态。

let getDefaultState = (serverProps) => {
return {
'appName': serverProps.appName
}
}

let getReducer = (serverProps) => {
let defaultState = getDefaultState(serverProps)
return (state = defaultState, action) => {

}
}

let getStore = (serverProps) => {
let reducer = getReducer(serverProps)
return store = createStore(reducer)
}

let ConnectedApp = connect(
mapStateToProps,
mapDispatchToProps
)(App)

let ProvidedApp = (serverProps) => {
return (
<Provider store={getStore(serverProps)}>
<ConnectedApp/>
</Provider>
)
}

这太丑了:/

关于javascript - 从 redux 中访问服务器 Prop ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com