* Make it irrelevant whether components call base.BuildRenderTree or not. Fixes #8192 * Remove base.BuildRenderTree calls from manually-implemented render logic * Update ref assembly code
This commit is contained in:
parent
cc1b2941f9
commit
63a4b5c27a
|
|
@ -577,7 +577,6 @@ namespace Test
|
|||
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
for (var i = 0; i < Count; i++)
|
||||
{
|
||||
builder.AddContent(i, Template, Value);
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@ namespace Microsoft.AspNetCore.Components
|
|||
}
|
||||
public abstract partial class ComponentBase : Microsoft.AspNetCore.Components.IComponent, Microsoft.AspNetCore.Components.IHandleAfterRender, Microsoft.AspNetCore.Components.IHandleEvent
|
||||
{
|
||||
public const string BuildRenderTreeMethodName = "BuildRenderTree";
|
||||
public ComponentBase() { }
|
||||
protected virtual void BuildRenderTree(Microsoft.AspNetCore.Components.RenderTree.RenderTreeBuilder builder) { }
|
||||
protected System.Threading.Tasks.Task Invoke(System.Action workItem) { throw null; }
|
||||
|
|
|
|||
|
|
@ -25,11 +25,6 @@ namespace Microsoft.AspNetCore.Components
|
|||
/// </summary>
|
||||
public abstract class ComponentBase : IComponent, IHandleEvent, IHandleAfterRender
|
||||
{
|
||||
/// <summary>
|
||||
/// Specifies the name of the <see cref="RenderTree"/>-building method.
|
||||
/// </summary>
|
||||
public const string BuildRenderTreeMethodName = nameof(BuildRenderTree);
|
||||
|
||||
private readonly RenderFragment _renderFragment;
|
||||
private RenderHandle _renderHandle;
|
||||
private bool _initialized;
|
||||
|
|
@ -41,7 +36,12 @@ namespace Microsoft.AspNetCore.Components
|
|||
/// </summary>
|
||||
public ComponentBase()
|
||||
{
|
||||
_renderFragment = BuildRenderTree;
|
||||
_renderFragment = builder =>
|
||||
{
|
||||
_hasPendingQueuedRender = false;
|
||||
_hasNeverRendered = false;
|
||||
BuildRenderTree(builder);
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -52,8 +52,9 @@ namespace Microsoft.AspNetCore.Components
|
|||
{
|
||||
// Developers can either override this method in derived classes, or can use Razor
|
||||
// syntax to define a derived class and have the compiler generate the method.
|
||||
_hasPendingQueuedRender = false;
|
||||
_hasNeverRendered = false;
|
||||
|
||||
// Other code within this class should *not* invoke BuildRenderTree directly,
|
||||
// but instead should invoke the _renderFragment field.
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -93,8 +93,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
|
||||
// If _fixedEditContext changes, tear down and recreate all descendants.
|
||||
// This is so we can safely use the IsFixed optimization on CascadingValue,
|
||||
// optimizing for the common case where _fixedEditContext never changes.
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "input");
|
||||
builder.AddAttribute(1, "type", "checkbox");
|
||||
builder.AddAttribute(2, "id", Id);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "input");
|
||||
builder.AddAttribute(1, "type", "date");
|
||||
builder.AddAttribute(2, "id", Id);
|
||||
|
|
|
|||
|
|
@ -61,7 +61,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "input");
|
||||
builder.AddAttribute(1, "type", "number");
|
||||
builder.AddAttribute(2, "step", _stepAttributeValue);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "select");
|
||||
builder.AddAttribute(1, "id", Id);
|
||||
builder.AddAttribute(2, "class", CssClass);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "input");
|
||||
builder.AddAttribute(1, "id", Id);
|
||||
builder.AddAttribute(2, "class", CssClass);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "textarea");
|
||||
builder.AddAttribute(1, "id", Id);
|
||||
builder.AddAttribute(2, "class", CssClass);
|
||||
|
|
|
|||
|
|
@ -64,8 +64,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
|
||||
foreach (var message in CurrentEditContext.GetValidationMessages(_fieldIdentifier))
|
||||
{
|
||||
builder.OpenElement(0, "div");
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
/// <inheritdoc />
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
|
||||
// As an optimization, only evaluate the messages enumerable once, and
|
||||
// only produce the enclosing <ul> if there's at least one message
|
||||
var messagesEnumerator = CurrentEditContext.GetValidationMessages().GetEnumerator();
|
||||
|
|
|
|||
|
|
@ -380,7 +380,6 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "p");
|
||||
builder.AddContent(1, Counter);
|
||||
builder.CloseElement();
|
||||
|
|
|
|||
|
|
@ -3655,7 +3655,6 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
var renderFactory = WhatToRender[TestId];
|
||||
renderFactory(this)(builder);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -482,7 +482,6 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "p");
|
||||
builder.AddContent(1, Value.ToString());
|
||||
builder.CloseElement();
|
||||
|
|
@ -513,7 +512,6 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
|
||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
base.BuildRenderTree(builder);
|
||||
builder.OpenElement(0, "p");
|
||||
builder.AddContent(1, Value.ToString());
|
||||
builder.CloseElement();
|
||||
|
|
|
|||
Loading…
Reference in New Issue