Yeah it looks like the docs example code has been written more as a rough outline of what to do, it’s clearly not fully functional code.
There are a couple of approaches, but the standard way would be to store the property handle as a member of your customization class.
void SetValueOnProperty( float NewValue );
TSharedPtr< class IPropertyHandle > LightMapResValue;
Assign this inside of CustomizeDetails. Then bind the slate events to methods of your customization class.
SNew( SSpinBox )
.MinSliderValue( 0 )
.MaxSliderValue( 1024 )
.OnValueCommitted_Raw( this, &FMyCustomizationClass::SetValueOnProperty )
.Value_Raw( this, &FMyCustomizationClass::GetValueFromProperty )
You can store other stuff as members of your customization class if it helps, for example the IDetailLayoutBuilder pointer, or a pointer to the object(s) being displayed in the details view (you get this from IDetailLayoutBuilder::GetObjectsBeingCustomized, and you should store them in a TWeakObjectPtr).
SComboBox (I’m guessing you may be planning on using it) isn’t exactly the most user friendly. For examples of that and details customization in general, your best bet is to search the engine source code. There are heaps of built in types which have details customizations, and the code for them uses exactly the same process as is used for custom types.