javascript - Access server props from within redux? -


i'm trying use redux, react-engine, , react-router.

the issue or question have react-engine provides object of props come server. how access these props within providedapp?

providedapp.js

import react 'react' import { connect, provider } 'react-redux' import app './app' import { mapstatetoprops, mapdispatchtoprops, store } './redux-stuff'  // connected component let connectedapp = connect(   mapstatetoprops,   mapdispatchtoprops )(app)  let providedapp = () => (   <provider store={store}>     <connectedapp/>   </provider> )  export default providedapp 

routes.js

import react 'react' import { router, route } 'react-router'  import layout './views/layout' import app './views/providedapp'  module.exports = (   <router>     <route path='/' component={layout}>       <route path='/app' component={app} />       <route path='/app/dev' component={app} />     </route>   </router> ) 

i think configuration little wonky, couldn't provider working other way. if theres way have provider wrap router i'd love working.


here's code of looks when move provider above router

connectedapp.js

import react 'react' import { connect, provider } 'react-redux' import app './app' import { mapstatetoprops, mapdispatchtoprops} './redux-stuff'  let connectedapp = connect(   mapstatetoprops,   mapdispatchtoprops )(app)  export default connectedapp 

routes.js

import react 'react' import { provider } 'react-redux' import { router, route } 'react-router' import { store } './redux-stuff'  import layout './views/layout' import app './views/connectedapp'  module.exports = (   <provider store={store}>     <router>       <route path='/' component={layout}>         <route path='/app' component={app} />       </route>     </router>   </provider> ) 

i error:

could not find "store" in either context or props of "connect(app)". either wrap root component in <provider>, or explicitly pass "store" prop "connect(app)".


update

i found can access code in first example within providedapp. have no clue how i'm supposed pass redux.

let providedapp = (props) => {   console.log(props)   return (     <provider store={store}>       <connectedapp/>     </provider>   ) } 

seems need wrap reducer , store , pass in serverprops default state this.

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

this super ugly :/


Comments