diff --git a/pynecone/app.py b/pynecone/app.py
index c0b3fe369..b4c387b18 100644
--- a/pynecone/app.py
+++ b/pynecone/app.py
@@ -263,7 +263,6 @@ class App(Base):
# Generate the component if it is a callable.
try:
component = component if isinstance(component, Component) else component()
- component.set_state(self.state)
except TypeError as e:
message = str(e)
if "BaseVar" in message or "ComputedVar" in message:
diff --git a/pynecone/components/base/bare.py b/pynecone/components/base/bare.py
index ce26c78cf..abf5ffe88 100644
--- a/pynecone/components/base/bare.py
+++ b/pynecone/components/base/bare.py
@@ -27,8 +27,4 @@ class Bare(Component):
return cls(contents=str(contents)) # type: ignore
def _render(self) -> Tag:
- contents = str(self.contents)
- if self.state is not None:
- check = f"{{{self.state.get_name()}"
- contents = str(self.contents).replace(check, f"${check}")
- return Tagless(contents=contents)
+ return Tagless(contents=str(self.contents))
diff --git a/pynecone/components/component.py b/pynecone/components/component.py
index 752e1cd87..c153fc0f3 100644
--- a/pynecone/components/component.py
+++ b/pynecone/components/component.py
@@ -24,9 +24,6 @@ from pynecone.style import Style
from pynecone.utils import format, imports, path_ops, types
from pynecone.var import BaseVar, Var
-if typing.TYPE_CHECKING:
- from pynecone.state import State
-
class Component(Base, ABC):
"""The base class for all Pynecone components."""
@@ -37,9 +34,6 @@ class Component(Base, ABC):
# The style of the component.
style: Style = Style()
- # The app state the component is connected to.
- state: Optional[Type[State]] = None
-
# A mapping from event triggers to event chains.
event_triggers: Dict[str, Union[EventChain, Var]] = {}
@@ -120,7 +114,7 @@ class Component(Base, ABC):
if types._issubclass(field_type, Var):
try:
# Try to create a var from the value.
- kwargs[key] = Var.create(value, is_string=type(value) == str)
+ kwargs[key] = Var.create(value)
# Check that the var type is not None.
if kwargs[key] is None:
@@ -365,7 +359,7 @@ class Component(Base, ABC):
children = [
child
if isinstance(child, Component)
- else Bare.create(contents=Var.create(child))
+ else Bare.create(contents=Var.create(child, is_string=True))
for child in children
]
return cls(children=children, **props)
@@ -399,19 +393,6 @@ class Component(Base, ABC):
child.add_style(style)
return self
- def set_state(self, state: Type[State]):
- """Set the state of the component and its children.
-
- Args:
- state: The state to set.
- """
- # Set the state of the component.
- self.state = state
-
- # Set the state of the children.
- for child in self.children:
- child.set_state(state)
-
def render(self) -> str:
"""Render the component.
diff --git a/tests/components/base/__init__.py b/tests/components/base/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/tests/components/base/test_bare.py b/tests/components/base/test_bare.py
index e05e621cc..04d061044 100644
--- a/tests/components/base/test_bare.py
+++ b/tests/components/base/test_bare.py
@@ -1,7 +1,6 @@
import pytest
from pynecone.components.base.bare import Bare
-from pynecone.state import DefaultState
@pytest.mark.parametrize(
@@ -9,7 +8,7 @@ from pynecone.state import DefaultState
[
("hello", "hello"),
("{}", "{}"),
- ("{default_state.name}", "${default_state.name}"),
+ ("${default_state.name}", "${default_state.name}"),
("{state.name}", "{state.name}"),
],
)
@@ -21,5 +20,4 @@ def test_fstrings(contents, expected):
expected: The expected output.
"""
comp = Bare.create(contents)
- comp.set_state(DefaultState)
- assert str(comp) == f"{{`{expected}`}}"
+ assert str(comp) == expected
diff --git a/tests/components/forms/test_uploads.py b/tests/components/forms/test_uploads.py
index 4f6161d0d..025af06c4 100644
--- a/tests/components/forms/test_uploads.py
+++ b/tests/components/forms/test_uploads.py
@@ -53,7 +53,7 @@ def test_upload_component_render(upload_component):
str(upload_component) == f" File(e)}>{({getRootProps, getInputProps}) => ({os.linesep}"
+ f'type="file"{{...getInputProps()}}/>{os.linesep}'
f"{os.linesep}"
"{`Drag and drop files here or click to select "
"files`})}"
@@ -72,7 +72,7 @@ def test_upload_component_with_props_render(upload_component_with_props):
f"noDrag={{true}}{os.linesep}"
"onDrop={e => File(e)}>{({getRootProps, getInputProps}) => ({os.linesep}"
+ f'type="file"{{...getInputProps()}}/>{os.linesep}'
f"{os.linesep}"
"{`Drag and drop files here or click to select "
"files`})}"
diff --git a/tests/components/test_component.py b/tests/components/test_component.py
index 1f88a6e99..9ef5a0ac4 100644
--- a/tests/components/test_component.py
+++ b/tests/components/test_component.py
@@ -6,7 +6,7 @@ import pynecone as pc
from pynecone.components.component import Component, CustomComponent, custom_component
from pynecone.components.layout.box import Box
from pynecone.event import EVENT_ARG, EVENT_TRIGGERS, EventHandler
-from pynecone.state import DefaultState, State
+from pynecone.state import State
from pynecone.style import Style
from pynecone.utils import imports
from pynecone.var import Var
@@ -434,27 +434,3 @@ def test_get_hooks_nested2(component3, component4):
).get_hooks()
== exp_hooks
)
-
-
-def test_set_state(component1, component2, component3):
- """Test that setting the state of a component works.
-
- Args:
- component1: test component.
- component2: another component.
- component3: component with hooks defined.
- """
- c2 = component2.create()
- c3 = component3.create()
- c1 = component1.create(c2, c3)
-
- # State should be None by default.
- assert c1.state is None
- assert c2.state is None
- assert c3.state is None
-
- # Setting the parent state should set the child state.
- c1.set_state(DefaultState)
- assert c1.state == DefaultState
- assert c2.state == DefaultState
- assert c3.state == DefaultState