首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用typescript编写的PHP V8Js render react

用typescript编写的PHP V8Js render react
EN

Stack Overflow用户
提问于 2017-03-07 21:38:02
回答 1查看 903关注 0票数 6

我一直在使用typescript编写react组件,遵循官方typescript文档中的说明:

https://www.typescriptlang.org/docs/handbook/react-&-webpack.html

我正在使用V8Js php扩展在服务器端渲染React,但我似乎对使用V8Js的正确方式缺乏理解。

这是我的react应用程序:(客户端渲染)

http://codepen.io/MasterScripter/pen/xqRZQO

我尝试在端服务器上渲染:

代码语言:javascript
复制
<?php

$v8 = new V8Js();

$react = [];

// stubs, react
$react[] = "var console = {warn: function(){}, error: print}";
$react[] = "var global = {}";
$react[] = file_get_contents('./dist/react.js');
$react[] = "var React = global.React";

$react[] = file_get_contents('./dist/bundle.js');
$data = [
  'value' => 1,
  'onClick' => 'function'
];
$react[] = sprintf(
  "React.renderComponentToString(Square({data: %s}), print)",
  json_encode($data));
$react = implode(";", $react);

try {
  $v8->executeString($react);
} catch(V8JsException $e) {
  echo "
    File: {$e->getJsFileName()} \n
    Line Number: {$e->getJsLineNumber()} \n
    Source Line: {$e->getJsSourceLine()} \n
    Trace: {$e->getJsTrace()}
  ";
}

'react.js‘包含原始的react & react-dom代码,'bundle.js’包含webpack包,与上面的笔中的包相同。

我得到了这个错误:

代码语言:javascript
复制
File: V8Js::compileString() 

Line Number: 209 

Source Line: module.exports = ReactDOM; 

Trace: ReferenceError: ReactDOM is not defined
at Object.setPrototypeOf.__proto__ (V8Js::compileString():209:18)
at __webpack_require__ (V8Js::compileString():47:30)
at Object.<anonymous> (V8Js::compileString():300:16)
at __webpack_require__ (V8Js::compileString():47:30)
at module.exports (V8Js::compileString():93:18)
at V8Js::compileString():96:10

有什么建议/提示可以让我正确地做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-10 01:51:18

看起来你需要添加

代码语言:javascript
复制
$react[] = "var React = global.React, ReactDOM = global.ReactDOM, ReactDOMServer = global.ReactDOMServer;";

而不是

代码语言:javascript
复制
$react[] = "var React = global.React";

(我还没有测试过它,只是基于this。我也没有太多使用V8JS的经验。我推荐阅读this来获得一个很好的介绍。)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42649793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档