What is the correct way to create and add components at runtime ?

I’m using

ASimpleActor* SpawnActor = World->SpawnActorDeferred<ASimpleActor>(ASimpleActor::StaticClass(), SpawnTransform, this);
	SpawnActor->Init();
	SpawnActor->FinishSpawning(SpawnTransform);

Does anyone knows why my Actor does not spawn at the Location I set? It always spawn at 0,0,0.
I’m creating the Scene Component and set as Root like this in the Init() function:

RootComp = NewObject<USceneComponent>(this, USceneComponent::StaticClass(), TEXT("RootComponent"));
	SetRootComponent(RootComp);
	RootComp->RegisterComponent();

(if I change and create the Scene/Root component on constructor using CreateDefaulSubobject, the location works)