You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Essentially, the desired behavior is: if an edit for a field (e.g. an input or text area) is 'rejected' (i.e. not applied to the model), the render should not update. In react this is known as 'controlled components'.
In squark you can test this by applying the patch I've pasted at the bottom and then editing the 'new item' input element on the todomvc example. Because the internal state isn't changing, arguably neither should the render. Unfortunately, it does.
React solves this by restoring state after a change event (described on the linked issue). Note that react also provides uncontrolled components where the value field is not set. I think the important thing is that both options are available (somehow).
diff --git a/examples/todomvc/crate/src/lib.rs b/examples/todomvc/crate/src/lib.rs
index a97c915..f640e85 100644
--- a/examples/todomvc/crate/src/lib.rs
+++ b/examples/todomvc/crate/src/lib.rs
@@ -187,10 +187,10 @@ fn header_view(state: &State) -> View<Action> {
class="new-todo"
placeholder="What needs to be done?"
value={ state.field.clone() }
- oninput={ |v| match v {
- HandlerArg::String(v) => Some(Action::UpdateField(v)),
- _ => None,
- } }
+ //oninput={ |v| match v {
+ // HandlerArg::String(v) => Some(Action::UpdateField(v)),
+ // _ => None,
+ //} }
onkeydown={ |v| match v {
HandlerArg::String(ref v) if v.as_str() == "Enter" => Some(Action::Add),
_ => None,
The text was updated successfully, but these errors were encountered:
Hmm. We have a simple binding for DOM such as just string base.
Before wrapping DOM to implement Comtrolled Component, We must make the binding having more rich types.
See yewstack/yew#233 (comment) for context.
Essentially, the desired behavior is: if an edit for a field (e.g. an input or text area) is 'rejected' (i.e. not applied to the model), the render should not update. In react this is known as 'controlled components'.
In squark you can test this by applying the patch I've pasted at the bottom and then editing the 'new item' input element on the todomvc example. Because the internal state isn't changing, arguably neither should the render. Unfortunately, it does.
React solves this by restoring state after a change event (described on the linked issue). Note that react also provides uncontrolled components where the value field is not set. I think the important thing is that both options are available (somehow).
The text was updated successfully, but these errors were encountered: