瀏覽代碼

allow functools partial with foreach (#4709)

Khaleel Al-Adhami 4 月之前
父節點
當前提交
1e8e82ec0e
共有 1 個文件被更改,包括 13 次插入1 次删除
  1. 13 1
      reflex/components/core/foreach.py

+ 13 - 1
reflex/components/core/foreach.py

@@ -2,6 +2,7 @@
 
 from __future__ import annotations
 
+import functools
 import inspect
 from typing import Any, Callable, Iterable
 
@@ -97,9 +98,20 @@ class Foreach(Component):
             # Determine the index var name based on the params accepted by render_fn.
             props["index_var_name"] = params[1].name
         else:
+            render_fn = self.render_fn
             # Otherwise, use a deterministic index, based on the render function bytecode.
             code_hash = (
-                hash(self.render_fn.__code__)
+                hash(
+                    getattr(
+                        render_fn,
+                        "__code__",
+                        (
+                            repr(self.render_fn)
+                            if not isinstance(render_fn, functools.partial)
+                            else render_fn.func.__code__
+                        ),
+                    )
+                )
                 .to_bytes(
                     length=8,
                     byteorder="big",