React要素(React要素が与えられた小道具のインスタンス)をシリアル化し、別の場所でデシリアライズしたいと考えています。なぜ聞くの? 1つのプロセスからstdoutにクラスを送信し、別のプロセスでそれをレンダリングできるようにしたいと思います。Node.js:Reactコンポーネントをシリアライズ/逆シリアル化する方法は?
- は、文字列としてそれをシリアル化し、それを
- をデシリアライズする
eval()
を使用して:私はまた は、私が試したどのような...単にReactDOM.renderToString()
を使用することは十分ではありませんので、レンダリングされたコンポーネントは、インタラクティブになりたいです:それぞれ独自の代用とJSON.stringify()
ためのリバイバー機能やJSON.parse()
MyReactComponent.toString()
リターンを使用します
"function MyReactClass() {
_classCallCheck(this, MyReactClass);
_get(Object.getPrototypeOf(MyReactClass.prototype), 'constructor', this).apply(this, arguments);
}"
render()
またはconstructor()
のように、コンポーネント固有のメソッドは含まれていません。
わからないあなたはRE renderToStringに何を意味するか - それはまだ一度レンダリングされ、クライアント上でinitedインタラクティブになります。あなたが店(例えばReduxの)中で、あなたの状態を持っている場合は、反応するコンポーネントをシリアル化を心配する必要はありません - あなただけの店をシリアル化する必要があります。もちろん、コンポーネントインスタンス内のどの状態も失われますが、純粋なコンポーネントを書くことができます –
問題は、Reactコンポーネントクラスが宛先に存在しないため、 'ReactDOM.render()'を呼び出すことができないことです。行き先でReactコンポーネントクラスにどのようにアクセスすることができるのか、それが原点からの文字列として送信されているか(まだ動作していないか)、ファイルに保存して、送信先(両方のプロセスが同じマシン上で実行されるため)など – senornestor
ファイル全体を送信し、ロードし、受信側でevalを使用できますか? –