How to get a reference to the widget itself in an event handler in slate?

Say I want to change a button’s style after being clicked, how to get a reference to itself in the OnClick event handler when using SNew to construct?

Try searching for SharedThis samples in source code:

TSharedPtr<FMyEditorToolkit> MyToolkitRef = SharedThis(this);


void Construct(const FArguments &InArgs, const TSharedPtr<FMyEditorToolkit> & TheRef);

SAssignNew(MySWidgetInstance, SMyCustomEditorWidgetType, MyToolkitRef);

I was originally declared a pointer to it and using SAssignNew in a function scope, and then capture it in a lambda, but the captured pointer was nullptr when the lambda was called, something like

void f()
{
    TSharedPtr<SButton> buttonPtr;
    SNew(SVerticalBox)
    + SVerticalBox::Slot()
    [
        SAssignNew(buttonPtr, SButton)
        .OnClick(FOnClick::CreateLambda([buttonPtr](){ /*buttonPtr is null here*/})
        //...
    ]
}

I guess I will just have to make the pointer a class member then.