File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ """
2+ Simulation of a simple useEffect-like behavior in Python.
3+
4+ This demonstrates executing a function when a dependency changes.
5+ Reference:
6+ https://en.wikipedia.org/wiki/Reactive_programming
7+ """
8+
9+ from typing import Callable , Any
10+
11+
12+ def use_effect_simulation (callback : Callable [[], None ], dependency : Any ) -> None :
13+ """
14+ Executes the callback when the dependency changes.
15+
16+ >>> calls = []
17+ >>> def cb():
18+ ... calls.append("called")
19+ >>> use_effect_simulation(cb, 1)
20+ >>> use_effect_simulation(cb, 1)
21+ >>> use_effect_simulation(cb, 2)
22+ >>> calls
23+ ['called', 'called']
24+ """
25+ if not hasattr (use_effect_simulation , "_prev" ):
26+ use_effect_simulation ._prev = None # type: ignore
27+
28+ if use_effect_simulation ._prev != dependency :
29+ callback ()
30+ use_effect_simulation ._prev = dependency
31+
32+
33+ if __name__ == "__main__" :
34+ def example ():
35+ print ("Effect triggered!" )
36+
37+ use_effect_simulation (example , 1 )
38+ use_effect_simulation (example , 1 )
39+ use_effect_simulation (example , 2 )
You can’t perform that action at this time.
0 commit comments