rename rx.route decorator (#1442)
This commit is contained in:
parent
3fa33bd644
commit
3faad315ca
@ -36,6 +36,7 @@ from .event import window_alert as window_alert
|
|||||||
from .middleware import Middleware as Middleware
|
from .middleware import Middleware as Middleware
|
||||||
from .model import Model as Model
|
from .model import Model as Model
|
||||||
from .model import session as session
|
from .model import session as session
|
||||||
|
from .page import page as page
|
||||||
from .route import route as route
|
from .route import route as route
|
||||||
from .state import ComputedVar as var
|
from .state import ComputedVar as var
|
||||||
from .state import State as State
|
from .state import State as State
|
||||||
|
@ -35,8 +35,10 @@ from reflex.config import get_config
|
|||||||
from reflex.event import Event, EventHandler, EventSpec
|
from reflex.event import Event, EventHandler, EventSpec
|
||||||
from reflex.middleware import HydrateMiddleware, Middleware
|
from reflex.middleware import HydrateMiddleware, Middleware
|
||||||
from reflex.model import Model
|
from reflex.model import Model
|
||||||
|
from reflex.page import (
|
||||||
|
DECORATED_PAGES,
|
||||||
|
)
|
||||||
from reflex.route import (
|
from reflex.route import (
|
||||||
DECORATED_ROUTES,
|
|
||||||
catchall_in_route,
|
catchall_in_route,
|
||||||
catchall_prefix,
|
catchall_prefix,
|
||||||
get_route_args,
|
get_route_args,
|
||||||
@ -468,7 +470,7 @@ class App(Base):
|
|||||||
task = progress.add_task("Compiling: ", total=len(self.pages))
|
task = progress.add_task("Compiling: ", total=len(self.pages))
|
||||||
|
|
||||||
# TODO: include all work done in progress indicator, not just self.pages
|
# TODO: include all work done in progress indicator, not just self.pages
|
||||||
for render, kwargs in DECORATED_ROUTES:
|
for render, kwargs in DECORATED_PAGES:
|
||||||
self.add_page(render, **kwargs)
|
self.add_page(render, **kwargs)
|
||||||
|
|
||||||
# Get the env mode.
|
# Get the env mode.
|
||||||
|
66
reflex/page.py
Normal file
66
reflex/page.py
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
"""The page decorator and associated variables and functions."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import List, Optional, Union
|
||||||
|
|
||||||
|
from reflex.components.component import Component
|
||||||
|
from reflex.event import EventHandler
|
||||||
|
|
||||||
|
DECORATED_PAGES = []
|
||||||
|
|
||||||
|
|
||||||
|
def page(
|
||||||
|
route: Optional[str] = None,
|
||||||
|
title: Optional[str] = None,
|
||||||
|
image: Optional[str] = None,
|
||||||
|
description: Optional[str] = None,
|
||||||
|
meta: Optional[str] = None,
|
||||||
|
script_tags: Optional[List[Component]] = None,
|
||||||
|
on_load: Optional[Union[EventHandler, List[EventHandler]]] = None,
|
||||||
|
):
|
||||||
|
"""Decorate a function as a page.
|
||||||
|
|
||||||
|
rx.App() will automatically call add_page() for any method decorated with page
|
||||||
|
when App.compile is called.
|
||||||
|
|
||||||
|
All defaults are None because they will use the one from add_page().
|
||||||
|
|
||||||
|
Note: the decorated functions still need to be imported.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
route: The route to reach the page.
|
||||||
|
title: The title of the page.
|
||||||
|
image: The favicon of the page.
|
||||||
|
description: The description of the page.
|
||||||
|
meta: Additionnal meta to add to the page.
|
||||||
|
on_load: The event handler(s) called when the page load.
|
||||||
|
script_tags: scripts to attach to the page
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The decorated function.
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
|
def decorator(render_fn):
|
||||||
|
kwargs = {}
|
||||||
|
if route:
|
||||||
|
kwargs["route"] = route
|
||||||
|
if title:
|
||||||
|
kwargs["title"] = title
|
||||||
|
if image:
|
||||||
|
kwargs["image"] = image
|
||||||
|
if description:
|
||||||
|
kwargs["description"] = description
|
||||||
|
if meta:
|
||||||
|
kwargs["meta"] = meta
|
||||||
|
if script_tags:
|
||||||
|
kwargs["script_tags"] = script_tags
|
||||||
|
if on_load:
|
||||||
|
kwargs["on_load"] = on_load
|
||||||
|
|
||||||
|
DECORATED_PAGES.append((render_fn, kwargs))
|
||||||
|
|
||||||
|
return render_fn
|
||||||
|
|
||||||
|
return decorator
|
@ -7,8 +7,8 @@ from typing import Dict, List, Optional, Union
|
|||||||
|
|
||||||
from reflex import constants
|
from reflex import constants
|
||||||
from reflex.event import EventHandler
|
from reflex.event import EventHandler
|
||||||
|
from reflex.page import page
|
||||||
DECORATED_ROUTES = []
|
from reflex.utils.console import deprecate
|
||||||
|
|
||||||
|
|
||||||
def route(
|
def route(
|
||||||
@ -37,25 +37,15 @@ def route(
|
|||||||
Returns:
|
Returns:
|
||||||
The decorated function.
|
The decorated function.
|
||||||
"""
|
"""
|
||||||
|
deprecate("@rx.route is deprecated and is being replaced by @rx.page instead")
|
||||||
|
|
||||||
def decorator(render_fn):
|
return page(
|
||||||
kwargs = {}
|
route=route,
|
||||||
if route:
|
title=title,
|
||||||
kwargs["route"] = route
|
image=image,
|
||||||
if title:
|
description=description,
|
||||||
kwargs["title"] = title
|
on_load=on_load,
|
||||||
if image:
|
)
|
||||||
kwargs["image"] = image
|
|
||||||
if description:
|
|
||||||
kwargs["description"] = description
|
|
||||||
if on_load:
|
|
||||||
kwargs["on_load"] = on_load
|
|
||||||
|
|
||||||
DECORATED_ROUTES.append((render_fn, kwargs))
|
|
||||||
|
|
||||||
return render_fn
|
|
||||||
|
|
||||||
return decorator
|
|
||||||
|
|
||||||
|
|
||||||
def verify_route_validity(route: str) -> None:
|
def verify_route_validity(route: str) -> None:
|
||||||
|
Loading…
Reference in New Issue
Block a user