Comments (3)
Hmm... I believe Stefan Rimaila (@stuf) ran into this same issue some time ago.
Would you like to make a quick PR with the following diff
-export const protoless0 = I.freeze(protoless(0))
+export const protoless0 = I.freeze(protoless(I.object0))
which should also work around the issue with RN? I'm hesitant to make more significant workarounds for RN, but if the immediate crash is due to just that one line, then why not just change it.
The root problem is that, for some reason, React Native implements a polyfill (or a replacement?) for the standard Object.assign
function that is not spec compliant. In other words, it doesn't work like the JavaScript standard specifies it should work.
Partial Lenses basically uses Object.assign
internally in some object manipulating optics to convert objects with non-trivial prototypes to plain objects that can be iterated over safely using for (const k in o)
. It is also possible that Partial Lenses calls Object.assign
with arguments that are not objects, which is something that Object.assign
should also handle (according to spec it converts null
and undefined
to (effectively) empty objects and calls ToObject
on other inputs).
I mention the above because, even though the change to protoless0
might make Partial Lenses to not immediately crash on React Native, it is still the case that some operations with Partial Lenses might crash on React Native due to the non-spec compliant Object.assign
implementation on that particular platform. This might happen, for example, when you try to access some value x
that is not an object with an object manipulating optic. Normally such an operation would treat the value x
in the same way as if it was undefined
, but with RN the operation would instead throw an error due to the non-spec compliant Object.assign
.
from partial.lenses.
Done
Pull Request
from partial.lenses.
Thanks for reporting this and the PR! I've now released v13.7.4 that contains the workaround.
from partial.lenses.
Related Issues (20)
- Add Node compatible `L.querystring` isomorphism
- Optic doesn't support Symbol. HOT 8
- Consider adding more parsing + stringifying combinators or a separate library
- Consider adding support for Maps and Sets
- Consider adding support for splitting an object into disjoint subsets of keys HOT 1
- Change `L.removable` Take a Predicate? HOT 3
- Consider adding `disperse` operation and `partsOf` lens constructor
- Isomorphism in L.array called with undefined HOT 2
- Index isomorphism HOT 5
- Great Work 👍 Thank you (No issue) HOT 5
- Dealing with exceptions?
- I'd like to L.traverse an object HOT 4
- Usage with JSON Patching? HOT 3
- Add example exercise answers to wiki? HOT 4
- Nested matches for L.satisfying HOT 2
- Branches Does not preserve order HOT 2
- Modifying a nested data structure? HOT 12
- `L.get` has unexpected behavior HOT 2
- Does not works with Modules object
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from partial.lenses.