2017-03-07 11 views
6

で書かれて反応し、レンダリング公式typescriptですドキュメントの指示に従って、typescriptですとコンポーネントの反応:PHPのV8Jsは、私が書いてきたtypescriptです

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

私は、サーバー側と反応レンダリングするV8Js PHP拡張を使用しています、 しかし、私はV8Jを使って正しい方法が何であるかの理解が不足しているようです。これは自分のアプリケーションを反応さ

:(クライアント側でレンダリングされた)

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

Iは、サイドサーバー上でレンダリングしてみました:

<?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' 生は&を反応させ含み反応ドームコード 'bundle.js'には、上記のペンと同じウェブパックバンドルが含まれています。

私はこのエラーを取得する:

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 

私はこれを適切に行うことができますどのように任意の提案/ヒント?

答えて

4

あなたは

$react[] = "var React = global.React, ReactDOM = global.ReactDOM, ReactDOMServer = global.ReactDOMServer;"; 

代わりの

$react[] = "var React = global.React"; 

を追加する必要があるように見える(私はそれをテストしていない。ただthisに基づいて、私はどちらかV8JSで多くの経験を持っていません。素敵なご紹介については、thisをお読みください。

関連する問題