Ejemplo n.º 1
0
 public BaseReactSharpBlazor()
 {
     runtime = new ReactRuntime()
     {
         Step = () =>
         {
             InvokeAsync(async() =>
             {
                 try
                 {
                     //var dom = new ReactRendererDOMJson();
                     var renderer = new ReactRenderer(runtime);
                     runtime.Root = renderer.Render(Element, runtime.Root, dom);
                     await JsRuntime.InvokeAsync <object>("reactSharp.renderJsonString", Ref,
                                                          dom.StringWriter.ToString());
                 }
                 catch (Exception e)
                 {
                     Console.WriteLine(e);
                     throw;
                 }
             });
         }
     };
 }
Ejemplo n.º 2
0
        public void TestRenderer()
        {
            var render  = new ReactRenderer(null);
            var element = new ReactElement($@"


<b class='test1'>


    <div>eeee</div>
    <div>eeee</div>
    <div>eeee {222}</div>

</b>




");
            var dom     = new ReactRendererDOMJson();
            var sw      = Stopwatch.StartNew();

            for (int i = 0; i < 100; i++)
            {
                render.Render(element, null, dom);
            }

            Console.WriteLine(sw.Elapsed);
            Console.WriteLine(dom.StringWriter.ToString().Length);
            Console.WriteLine(dom.StringWriter.ToString());
        }
Ejemplo n.º 3
0
        public void Run(string mainScriptPath, ReactRenderer renderer, Globals globals)
        {
            this.javascriptThread = new Thread(() =>
            {
                try
                {
                    var script = File.ReadAllText(mainScriptPath);

                    Native.JsCreateRuntime(JavaScriptRuntimeAttributes.None, null, out runtime);
                    Native.JsCreateContext(runtime, out context);
                    Native.JsSetCurrentContext(context);

                    globals.SetGlobals(context);

                    var error = Native.JsRunScript(script, currentSourceContext++, "", out var __);

                    while (error == JavaScriptErrorCode.NoError)
                    {
                        lock (renderer.handlesToInvoke)
                        {
                            while (renderer.handlesToInvoke.Count > 0)
                            {
                                var handle = renderer.handlesToInvoke.Dequeue();
                                error      = Native.JsRunScript(
                                    $"process.natives.invokeCallback(\"{handle.Item1}\", \"{handle.Item2}\")",
                                    currentSourceContext++,
                                    "",
                                    out var _);
                            }
                        }

                        Thread.Sleep(25);
                    }

                    Native.ThrowIfError(error);
                }
                catch (JavaScriptScriptException ex)
                {
                    PrintJavaScriptError(ex);
                }
                catch (ThreadAbortException)
                {
                    Native.JsSetCurrentContext(JavaScriptContext.Invalid);
                    Native.JsDisposeRuntime(runtime);
                }
            });

            javascriptThread.Start();
        }
Ejemplo n.º 4
0
        protected string DoPrerender()
        {
            try
            {
                var xml      = new XElement("Template");
                var dom      = new ReactRendererXElement(xml);
                var renderer = new ReactRenderer(null);
                renderer.Render(Element, null, dom);
                var sb = new StringBuilder();
                foreach (var xmlNode in xml.Nodes())
                {
                    sb.Append(xmlNode.ToString());
                }

                return(sb.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Ejemplo n.º 5
0
        public ReactButtonElement(ReactRenderer renderer, BridgePayload.BridgeMessage.ComponentProps props)
        {
            this.renderer = renderer;

            this.UpdateProps(props);
        }
 public MessageHandler(ReactRenderer renderer)
 {
     this.renderer = renderer;
 }