diff --git a/ReactWithDotNet/FC.cs b/ReactWithDotNet/FC.cs index 914da7ed..98538770 100644 --- a/ReactWithDotNet/FC.cs +++ b/ReactWithDotNet/FC.cs @@ -75,6 +75,22 @@ protected override Task constructor() return Task.CompletedTask; } + + static void TryUpdateProps(object targetInMethod, object target) + { + if (targetInMethod is not null) + { + foreach (var fieldInfo in targetInMethod.GetType().GetFields()) + { + if (char.IsUpper(fieldInfo.Name[0])) + { + var propValue = fieldInfo.GetValue(targetInMethod); + + fieldInfo.SetValue(target, propValue); + } + } + } + } protected override Element render() { @@ -91,6 +107,8 @@ protected override Element render() if (_target is null && state.Scope is not null) { InitializeTarget(); + + TryUpdateProps(renderFuncWithScope?.Target,_target); } MethodInfo methodInfo = null; @@ -115,13 +133,20 @@ protected override Element render() protected override async Task renderAsync() { - if (renderFuncAsyncWithScope is not null) + if (renderFuncAsyncWithScope is not null && state.Scope is null) { var fc = await renderFuncAsyncWithScope(); return fc?.Invoke(this); } + if (_target is null && state.Scope is not null) + { + InitializeTarget(); + + TryUpdateProps(renderFuncAsyncWithScope?.Target,_target); + } + MethodInfo methodInfo = null; if (TryResolveMethodInfo(state.RenderMethodNameWithToken, ref methodInfo)) {