[REF-3375] useMemo on generateUUID props to maintain consistent value (#3708)
When using rx.vars.get_uuid_string_var, wrap the prop Var in `useMemo` so that the value remains consistent across re-renders of the component. Fix #3707
This commit is contained in:
parent
c4346c2624
commit
a4e3f05601
@ -2552,17 +2552,25 @@ class CallableVar(BaseVar):
|
|||||||
|
|
||||||
|
|
||||||
def get_uuid_string_var() -> Var:
|
def get_uuid_string_var() -> Var:
|
||||||
"""Return a var that generates UUIDs via .web/utils/state.js.
|
"""Return a Var that generates a single memoized UUID via .web/utils/state.js.
|
||||||
|
|
||||||
|
useMemo with an empty dependency array ensures that the generated UUID is
|
||||||
|
consistent across re-renders of the component.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
the var to generate UUIDs at runtime.
|
A Var that generates a UUID at runtime.
|
||||||
"""
|
"""
|
||||||
from reflex.utils.imports import ImportVar
|
from reflex.utils.imports import ImportVar
|
||||||
|
|
||||||
unique_uuid_var_data = VarData(
|
unique_uuid_var_data = VarData(
|
||||||
imports={f"/{constants.Dirs.STATE_PATH}": {ImportVar(tag="generateUUID")}} # type: ignore
|
imports={
|
||||||
|
f"/{constants.Dirs.STATE_PATH}": {ImportVar(tag="generateUUID")}, # type: ignore
|
||||||
|
"react": "useMemo",
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
return BaseVar(
|
return BaseVar(
|
||||||
_var_name="generateUUID()", _var_type=str, _var_data=unique_uuid_var_data
|
_var_name="useMemo(generateUUID, [])",
|
||||||
|
_var_type=str,
|
||||||
|
_var_data=unique_uuid_var_data,
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user