Widget variables auto assigned values and all values undone when compiling. Is this normal behavior?

My workflow is to create a UUserWidget C++ class and then create a Blueprint child thereof. I create a bunch of public component pointers in C++ and then set them in the Blueprint. I hit save, all is well, I hit compile and all the values I set are unset and I am left with a bunch of nullptrs.

The only way for me to have access to my UMG components inside C++ is to create a public variable in C++ that has the same name as a NON-VARIABLE component in Blueprint. In this case the variable seems to auto detect that I intend to use it and it is populated all on it’s own. Convenient. So this led me to believe that it is normal behavior for UMG variable to be auto populated in this way and thus maybe it is normal behavior for any variables you assign to be unset when you hit compile…???

But if this is the case then I have a huge question mark hanging over my head. I am trying to create a leaderboards system and for that I need the components in an array so I can loop over them as I set their values. I can easily enough create a TArray<UTextBlock*> in C++, no problem, but I obviously can’t use that as the name for my components… so how do I populate that array if all the values are removed when I hit compile?