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
{{ message }}
This repository has been archived by the owner on Oct 14, 2018. It is now read-only.
The problem is that, React state has getInitialState, so the default state can be defined inside the component. With cursors, the default state has to be declared somewhere else, at the top.
So suppose refine could take an optional extra argument, a fallback value
The thoughtwork for this is done, we have a working clojure implementation. However, we will need to remove the varargs from refine - so the first argument needs to be a list. So this will break api compat and add some verbosity.
I want this for 2.0 but i don't want to break API compat, i may introduce a new API for this e.g. refineWithDefault or refineWith i have to think about the naming
Here's a compromise: we could do type-checking on the varargs - Unless the last arg to refine is a string, consider it a default value for the path given so far?
Of course, this would preclude strings from being default values, but it would preserve API compat.
What other edge cases does this run into?
I'm not super thrilled by the idea, but I'm just throwing it out there for your thoughts.
The problem is that, React state has getInitialState, so the default state can be defined inside the component. With cursors, the default state has to be declared somewhere else, at the top.
So suppose refine could take an optional extra argument, a fallback value
state = {a: {b: null }}
cursor.refine(['a', 'b']).value //=> null
var not_found = {c: {d: 42}}
c2 = cursor.refine(['a', 'b'], not_found);
c3 = c2.refine(['c', 'd']);
c3.value //> 42
c3.set(c3.value + 1); //> {a: {b: {c: {d: 43}}}}
I did implemented this in clojurescript and I found this helped clean up my components quite a bit.
The text was updated successfully, but these errors were encountered: