ReactiveUI icon indicating copy to clipboard operation
ReactiveUI copied to clipboard

[Bug]: View&ViewModel's WhenActivated run error order in MAUI implement

Open cqgis opened this issue 3 years ago • 0 comments

Describe the bug 🐞

A bug happened! View&ViewModel's WhenActivated in MAUI triggered with error order

Step to reproduce

Create New MAUI Applicaton

public class DemoViewModel : ReactiveObject, IActivatableViewModel
{
    public ViewModelActivator Activator { get; }

    public DemoViewModel()
    {
        this.Activator = new ViewModelActivator();
        this.Log().Info($"ViewModel Created");
        this.WhenActivated((CompositeDisposable dis) =>
        {
            this.Log().Info($"ViewModel Actived");
        });
    }
}
public partial class DemoView : IEnableLogger
{
	public DemoView()
	{
	      InitializeComponent();
              this.Log().Info($"View Created");
              this.WhenActivated(dis =>
              {
                  this.Log().Info($"View Actived");
              });
    }
}
<maui:ReactiveContentView x:TypeArguments="whenActivatedDemo:DemoViewModel" xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
                          xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                          xmlns:maui="clr-namespace:ReactiveUI.Maui;assembly=ReactiveUI.Maui"
                          xmlns:whenActivatedDemo="clr-namespace:WhenActivatedDemo"
                          x:Class="WhenActivatedDemo.DemoView">
    <VerticalStackLayout>
        <Label FontSize="40"
            Text="Welcome to .NET MAUI!"
            VerticalOptions="Center" 
            HorizontalOptions="Center" />
    </VerticalStackLayout>
</maui:ReactiveContentView>

	public MainPage()
	{
	    InitializeComponent();
            this.Log().Info($"Init");
            var viewModel = new DemoViewModel();
            var view      = new DemoView
            {
                ViewModel = viewModel,
            };
           this.Log().Info($"Show");
           this.Content = view;
    }

when executed ,the logger print

[0:] MainPage: Init
[0:] DemoViewModel: ViewModel Created
[0:] DemoView: View Created
[0:] DemoView: View Actived
[0:] DemoViewModel: ViewModel Actived
[0:] MainPage: Show

Reproduction repository

Expected behavior

the order is error , right should be :

[0:] MainPage: Init
[0:] DemoViewModel: ViewModel Created
[0:] DemoView: View Created
[0:] MainPage: Show
[0:] DemoView: View Actived
[0:] DemoViewModel: ViewModel Actived

IDE

Visual Studio 2022

ReactiveUI Version

18.3.1

cqgis avatar Aug 30 '22 08:08 cqgis