From 0c59f670b2954046b83a099761842f3fd65a3f4a Mon Sep 17 00:00:00 2001 From: SteveSandersonMS Date: Mon, 2 Nov 2015 20:23:05 -0800 Subject: [PATCH] Simplify ReactRenderer API when referencing default modules --- .../Content/Node/react-rendering.js | 2 +- Microsoft.AspNet.NodeServices.React/ReactRenderer.cs | 4 ++++ samples/react/ReactGrid/Controllers/HomeController.cs | 1 - samples/react/ReactGrid/ReactApp/boot-client.jsx | 2 +- samples/react/ReactGrid/ReactApp/components/ReactApp.jsx | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Microsoft.AspNet.NodeServices.React/Content/Node/react-rendering.js b/Microsoft.AspNet.NodeServices.React/Content/Node/react-rendering.js index 27e97c7..b60e2d9 100644 --- a/Microsoft.AspNet.NodeServices.React/Content/Node/react-rendering.js +++ b/Microsoft.AspNet.NodeServices.React/Content/Node/react-rendering.js @@ -27,7 +27,7 @@ module.exports = { renderToString: function(callback, options) { var resolvedPath = path.resolve(process.cwd(), options.moduleName); var requestedModule = require(resolvedPath); - var component = requestedModule[options.exportName]; + var component = options.exportName ? requestedModule[options.exportName] : requestedModule; if (!component) { throw new Error('The module "' + resolvedPath + '" has no export named "' + options.exportName + '"'); } diff --git a/Microsoft.AspNet.NodeServices.React/ReactRenderer.cs b/Microsoft.AspNet.NodeServices.React/ReactRenderer.cs index 4094a2a..86e0794 100644 --- a/Microsoft.AspNet.NodeServices.React/ReactRenderer.cs +++ b/Microsoft.AspNet.NodeServices.React/ReactRenderer.cs @@ -12,6 +12,10 @@ namespace Microsoft.AspNet.NodeServices.React nodeScript = new StringAsTempFile(script); // Will be cleaned up on process exit } + public static Task RenderToString(INodeServices nodeServices, string moduleName, string baseUrl) { + return RenderToString(nodeServices, moduleName, /* exportName */ null, baseUrl); + } + public static async Task RenderToString(INodeServices nodeServices, string moduleName, string exportName, string baseUrl) { return await nodeServices.InvokeExport(nodeScript.FileName, "renderToString", new { moduleName, diff --git a/samples/react/ReactGrid/Controllers/HomeController.cs b/samples/react/ReactGrid/Controllers/HomeController.cs index 37dff2b..101330b 100755 --- a/samples/react/ReactGrid/Controllers/HomeController.cs +++ b/samples/react/ReactGrid/Controllers/HomeController.cs @@ -17,7 +17,6 @@ namespace ReactExample.Controllers { ViewData["ReactOutput"] = await ReactRenderer.RenderToString(this.nodeServices, moduleName: "ReactApp/components/ReactApp.jsx", - exportName: "ReactApp", baseUrl: Request.Path ); return View(); diff --git a/samples/react/ReactGrid/ReactApp/boot-client.jsx b/samples/react/ReactGrid/ReactApp/boot-client.jsx index 623daf4..42e4f90 100644 --- a/samples/react/ReactGrid/ReactApp/boot-client.jsx +++ b/samples/react/ReactGrid/ReactApp/boot-client.jsx @@ -1,7 +1,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import createBrowserHistory from 'history/lib/createBrowserHistory'; -import { ReactApp } from './components/ReactApp.jsx'; +import ReactApp from './components/ReactApp.jsx'; // In the browser, we render into a DOM node and hook up to the browser's history APIs var history = createBrowserHistory(); diff --git a/samples/react/ReactGrid/ReactApp/components/ReactApp.jsx b/samples/react/ReactGrid/ReactApp/components/ReactApp.jsx index 45c9bf1..f135152 100644 --- a/samples/react/ReactGrid/ReactApp/components/ReactApp.jsx +++ b/samples/react/ReactGrid/ReactApp/components/ReactApp.jsx @@ -2,7 +2,7 @@ import React from 'react'; import { Router, Route } from 'react-router'; import { PeopleGrid } from './PeopleGrid.jsx'; -export class ReactApp extends React.Component { +export default class ReactApp extends React.Component { render() { return (