Skip to content

Commit

Permalink
fix rx.image src not working with state (#1915)
Browse files Browse the repository at this point in the history
  • Loading branch information
Lendemor committed Oct 17, 2023
1 parent 6829507 commit 5f67094
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
19 changes: 14 additions & 5 deletions reflex/components/media/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

from reflex.components.component import Component
from reflex.components.libs.chakra import ChakraComponent
from reflex.components.tags import Tag
from reflex.utils.serializers import serializer
from reflex.vars import Var

Expand Down Expand Up @@ -65,11 +64,21 @@ def get_event_triggers(self) -> dict[str, Union[Var, Any]]:
"on_load": lambda: [],
}

def _render(self) -> Tag:
self.src.is_string = True
@classmethod
def create(cls, *children, **props) -> Component:
"""Create an Image component.
# Render the table.
return super()._render()
Args:
*children: The children of the image.
**props: The props of the image.
Returns:
The Image component.
"""
src = props.get("src", None)
if src is not None and not isinstance(src, (Var)):
props["src"] = Var.create(value=src, is_string=True)
return super().create(*children, **props)


try:
Expand Down
6 changes: 2 additions & 4 deletions tests/components/media/test_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def test_serialize_image(pil_image: Img):
def test_set_src_str():
"""Test that setting the src works."""
image = rx.image(src="pic2.jpeg")
assert str(image.src) == "pic2.jpeg" # type: ignore
assert str(image.src) == "{`pic2.jpeg`}" # type: ignore

def test_set_src_img(pil_image: Img):
"""Test that setting the src works.
Expand All @@ -43,7 +43,7 @@ def test_set_src_img(pil_image: Img):
pil_image: The image to serialize.
"""
image = Image.create(src=pil_image)
assert str(image.src) == serialize_image(pil_image) # type: ignore
assert str(image.src.name) == serialize_image(pil_image) # type: ignore

def test_render(pil_image: Img):
"""Test that rendering an image works.
Expand All @@ -52,8 +52,6 @@ def test_render(pil_image: Img):
pil_image: The image to serialize.
"""
image = Image.create(src=pil_image)
assert not image.src.is_string # type: ignore
image._render()
assert image.src.is_string # type: ignore

except ImportError:
Expand Down

0 comments on commit 5f67094

Please sign in to comment.