Here's an example from the docs.陣營路由器服務器服務器渲染道具
import { renderToString } from 'react-dom/server'
import { match, RouterContext } from 'react-router'
import routes from './routes'
serve((req, res) => {
// Note that req.url here should be the full URL path from
// the original request, including the query string.
match({ routes, location: req.url }, (error, redirectLocation, renderProps) => {
if (error) {
res.status(500).send(error.message)
} else if (redirectLocation) {
res.redirect(302, redirectLocation.pathname + redirectLocation.search)
} else if (renderProps) {
// You can also check renderProps.components or renderProps.routes for
// your "not found" component or route respectively, and send a 404 as
// below, if you're using a catch-all route.
res.status(200).send(renderToString(<RouterContext {...renderProps} />))
} else {
res.status(404).send('Not found')
}
})
})
我有一個這樣的對象:
let reactServerProps = {
'gaKey': process.env.GA_KEY,
'query': req.query,
}
我想這個對象傳遞到反應路由器這裏
res.status(200).send(renderToString(<RouterContext {...renderProps} {...reactServerProps} />))
我似乎無法提供對組件內部變量的訪問。
我已經使用'props'命名空間尋找變量來連接所有組件。有什麼方法可以將數據作爲「道具」傳遞嗎? – ThomasReggi
您可以在createElement方法中使用裂縫,我在這裏找到了一個實現:http://stackoverflow.com/questions/33978781。儘管如此,自從react-router v1以來,我並不樂觀。 我認爲使用Object'assign()'方法將數據直接注入到'renderProps'中也是可能的,儘管它感覺很不方便。即分配(renderProps.params,reactServerProps)' –
@ThomasReggi好消息,似乎將價值作爲道具傳遞給所有孩子而非上下文仍然是完全可行的。更新瞭解釋的答案。 –