Javascript 反应路由器在服务器上未按预期呈现
我正在尝试使用在php服务器上进行react渲染 单个组件渲染很好,但我在使用Javascript 反应路由器在服务器上未按预期呈现,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我正在尝试使用在php服务器上进行react渲染 单个组件渲染很好,但我在使用渲染子组件时遇到问题 我像躲避瘟疫一样避开了php-V8Js。相反,我以Airbnb为例。基本上,只需在服务器上安装Node,并使用类似于对本地节点服务器执行HTTP请求的操作。通过POST请求将您的PHP数据发送到localhost:3000或其他任何地方。然后,您所要做的就是按照设置服务器端渲染 我谈了一下我是如何处理这个问题的。问题是因为您将'Master'和'about'作为字符串传递,所以React只创建新的
渲染子组件时遇到问题
我像躲避瘟疫一样避开了php-V8Js。相反,我以Airbnb为例。基本上,只需在服务器上安装Node,并使用类似于对本地节点服务器执行HTTP请求的操作。通过POST请求将您的PHP数据发送到localhost:3000或其他任何地方。然后,您所要做的就是按照设置服务器端渲染
我谈了一下我是如何处理这个问题的。问题是因为您将'Master'
和'about'
作为字符串传递,所以React只创建新的空元素。您需要将主控
和关于
用作上面导入的变量:
变量路由={
路径:“/”,
组成部分:主,
索引路径:{
组件:关于
}
}
对Brad来说,我认为和Nodejs一起去也是最好的途径,它应该得到更好的支持,并且无论如何都要使用V8。这是因为您将组件作为字符串传递,例如“Master”
,而不是导入的组件Master
?Pete的回答解决了我遇到的问题,但在本地设置php v8js的痛苦之后,我想在进入live时我会接受您的node js建议,谢谢你的提示。
<?php
$v8js = new V8Js();
ob_start();
$v8js->executeString(file_get_contents(PUBLIC_PATH . '/js/bundle.js'), 'v8.js');
$content = ob_get_clean();
echo $content;
import React from 'react'
import { render } from 'react-dom'
import { Router, Route, Link, browserHistory, IndexRoute, match, RouterContext } from 'react-router'
import Master from './views/Master.jsx';
import About from './views/About.jsx';
var routes = {
path: '/',
component: 'Master',
indexRoute: {
component: 'About'
}
}
if (typeof document === 'undefined'){
match({
routes,
location: '/'
},
function(error, redirectLocation, renderProps) {
print( React.renderToString(<RouterContext {...renderProps}/>));
})
}
<Master data-reactid=".1dpk2jzhts0" data-react-checksum="2085756513">
<About data-reactid=".1dpk2jzhts0.0"></About>
</Master>