remove HookVar and use Var with VarData instead

This commit is contained in:
Lendemor 2024-12-12 00:26:46 +01:00
parent 8c01fdbfdc
commit ca501e99c6
4 changed files with 10 additions and 57 deletions

View File

@ -70,7 +70,6 @@ from reflex.vars.base import (
cached_property_no_lock,
)
from reflex.vars.function import ArgsFunctionOperation, FunctionStringVar
from reflex.vars.hooks import HookVar
from reflex.vars.number import ternary_operation
from reflex.vars.object import ObjectVar
from reflex.vars.sequence import LiteralArrayVar
@ -1543,10 +1542,6 @@ class Component(BaseComponent, ABC):
if str(hook) in code:
code[str(hook)] = VarData.merge(var_data, code[str(hook)])
elif isinstance(hook, HookVar):
code[str(hook)] = VarData.merge(
var_data, VarData(position=hook.position)
)
else:
code[str(hook)] = var_data
@ -2253,7 +2248,7 @@ class StatefulComponent(BaseComponent):
)
# Store the memoized function name and hook code for this event trigger.
trigger_memo[event_trigger] = (
HookVar(_js_expr=memo_name)._replace(
Var(_js_expr=memo_name)._replace(
_var_type=EventChain, merge_var_data=memo_var_data
),
f"const {memo_name} = useCallback({rendered_chain}, [{', '.join(var_deps)}])",

View File

@ -11,8 +11,7 @@ from reflex.event import EventChain, EventHandler, passthrough_event_spec
from reflex.utils.format import format_prop, wrap
from reflex.utils.imports import ImportVar
from reflex.vars import get_unique_variable_name
from reflex.vars.base import Var
from reflex.vars.hooks import HookVar
from reflex.vars.base import Var, VarData
class Clipboard(Fragment):
@ -74,7 +73,7 @@ class Clipboard(Fragment):
),
}
def add_hooks(self) -> list[str | Var]:
def add_hooks(self) -> list[str | Var[str]]:
"""Add hook to register paste event listener.
Returns:
@ -86,8 +85,13 @@ class Clipboard(Fragment):
if isinstance(on_paste, EventChain):
on_paste = wrap(str(format_prop(on_paste)).strip("{}"), "(")
hook_expr = f"usePasteHandler({self.targets!s}, {self.on_paste_event_actions!s}, {on_paste!s})"
return [
HookVar.create(hook_expr, _position=Hooks.HookPosition.POST_TRIGGER),
Var(
hook_expr,
_var_type="str",
_var_data=VarData(position=Hooks.HookPosition.POST_TRIGGER),
),
]

View File

@ -71,6 +71,6 @@ class Clipboard(Fragment):
...
def add_imports(self) -> dict[str, ImportVar]: ...
def add_hooks(self) -> list[str | Var]: ...
def add_hooks(self) -> list[str | Var[str]]: ...
clipboard = Clipboard.create

View File

@ -1,46 +0,0 @@
"""A module for hooks-related Var."""
from __future__ import annotations
import dataclasses
import sys
from reflex.constants import Hooks
from .base import Var, VarData
@dataclasses.dataclass(
eq=False,
frozen=True,
**{"slots": True} if sys.version_info >= (3, 10) else {},
)
class HookVar(Var):
"""A var class for representing a hook."""
position: Hooks.HookPosition | None = None
@classmethod
def create(
cls,
_hook_expr: str,
_var_data: VarData | None = None,
_position: Hooks.HookPosition | None = None,
):
"""Create a hook var.
Args:
_hook_expr: The hook expression.
_position: The position of the hook in the component.
Returns:
The hook var.
"""
hook_var = cls(
_js_expr=_hook_expr,
_var_type="str",
_var_data=_var_data,
position=_position,
)
# print("HookVar.create", _hook_expr, hook_var.position)
return hook_var