@@ -22,11 +22,13 @@ def __init__(
22
22
init : bool = False ,
23
23
always_update : bool = False ,
24
24
compute : bool = True ,
25
+ on_set : Callable [[Reactable , str , ReactiveType ], None ] | None = None ,
25
26
) -> None :
26
27
self ._default = default
27
28
self ._init = init
28
29
self ._always_update = always_update
29
30
self ._run_compute = compute
31
+ self ._on_set = on_set
30
32
31
33
def _initialize_reactive (self , obj : Reactable , name : str ) -> None :
32
34
"""Initialized a reactive attribute on an object.
@@ -129,6 +131,9 @@ def __set__(self, obj: Reactable, value: ReactiveType) -> None:
129
131
if self ._run_compute :
130
132
self ._compute (obj )
131
133
134
+ if callable (self ._on_set ):
135
+ self ._on_set (obj , self .name , value )
136
+
132
137
@classmethod
133
138
def _check_watchers (cls , obj : Reactable , name : str , old_value : Any ):
134
139
"""Check watchers, and call watch methods / computes
@@ -226,9 +231,11 @@ def __init__(
226
231
* ,
227
232
init : bool = True ,
228
233
always_update : bool = False ,
234
+ on_set : Callable [[Reactable , str , ReactiveType ], None ] | None = None ,
229
235
) -> None :
230
236
super ().__init__ (
231
237
default ,
232
238
init = init ,
233
239
always_update = always_update ,
240
+ on_set = on_set ,
234
241
)
0 commit comments