reactjs/React.NET

Using ReactJs.Net in multisite solution

Opened this issue · 0 comments

I'm using these library versions:

  • ReactJS.NET: 5.2.11
  • JavaScriptEngineSwitcher: V8 3.5.5
  • react and react-dom: (N/A if using bundled react, or version number)
  • webpack: bundled webpack
  • node: (N/A if using bundled react)

Runtime environment:

  • OS: Windows 10
  • .NET Framework 4.8

Hi guys!
We are having issues with configuring the react.NET library for the multisite solution. We are using Sitecore CMS where there are multiple sites configured within one app domain in .NET. Each site has its own front-end build with a separate output path, i.e. '~/dist/'. At the moment we are using the following code to configure react.NET:

public class ReactJsNetRequestHandler : HttpRequestProcessor
{
        private static readonly IDictionary<string, string> ReactPaths = new Dictionary<string, string>
        {
            { "SiteOne", "~/dist/siteOne" },
            { "SiteTwo", "~/dist/siteTwo" }
        };

        public override void Process(HttpRequestArgs args)
        {
            if (Sitecore.Context.Site == null || !ReactPaths.ContainsKey(Sitecore.Context.Site.Name))
                return;

            var reactPath = ReactPaths[Sitecore.Context.Site.Name];
            Configure(reactPath);
        }

        private static void Configure(string path)
        {
            ReactSiteConfiguration.Configuration
                .SetLoadBabel(false)
                .SetLoadReact(false)
                .SetReactAppBuildPath(path)
                ;

            JsEngineSwitcher.Current.DefaultEngineName = V8JsEngine.EngineName;
            JsEngineSwitcher.Current.EngineFactories.AddV8();
        }
}

The issue with the current code is it only works with the first initialized site, all subsequent sites are unable to find JSX resources.

Is it possible to have multiple configurations or dynamically loaded configurations?

Best regards, Radik.