fetch(url,{ headers: { 'Cookie': req.get('Cookie') || '' } })
改写咱们的服务端store,在建立的时候传入服务端的req参数,再改写服务端的fetch方法接受req参数git
export const getServerStore = (req) => { return createStore(reducer,applyMiddleware(thunk.withExtraArgument(fetchServer(req)))) }
//服务端代码
<Provider store={Store}> <StaticRouter context={context} location={req.path}> { renderRoutes(Routers) } </StaticRouter> </Provider> console.log(context); //404页面 context.notFound&&res.status(404); //404组件代码 const NotFound = (props) => { props.staticContext&&(props.staticContext.notFound = true); return (<div>not found</div>) }
staticRouter提供一个全局的context参数,组件使用props.staticContext能够获取这个变量。那么咱们就能够经过自定义context的一些变量(notFound)来表明页面是否匹配到。github
context.action==='REPLACE'&&res.status(301);
很简单,staticRouter的context会在咱们页面重定向以后定义一些变量,其中提供一个action参数,表明是否重定向promise
项目地址:git@github.com:longlongdan/Reactssr.gitcookie