fix(reactivity): fix iOS 12 JSON.stringify error on reactive objects
- Use WeakMap for raw -> reactive/readonly storage. This is slightly more expensive than using a field on the taget object but avoids polluting the original. - also fix Collection.forEach callback value fix #1916
This commit is contained in:
@@ -1,4 +1,12 @@
|
||||
import { reactive, readonly, toRaw, ReactiveFlags, Target } from './reactive'
|
||||
import {
|
||||
reactive,
|
||||
readonly,
|
||||
toRaw,
|
||||
ReactiveFlags,
|
||||
Target,
|
||||
readonlyMap,
|
||||
reactiveMap
|
||||
} from './reactive'
|
||||
import { TrackOpTypes, TriggerOpTypes } from './operations'
|
||||
import { track, trigger, ITERATE_KEY } from './effect'
|
||||
import {
|
||||
@@ -48,10 +56,7 @@ function createGetter(isReadonly = false, shallow = false) {
|
||||
return isReadonly
|
||||
} else if (
|
||||
key === ReactiveFlags.RAW &&
|
||||
receiver ===
|
||||
(isReadonly
|
||||
? target[ReactiveFlags.READONLY]
|
||||
: target[ReactiveFlags.REACTIVE])
|
||||
receiver === (isReadonly ? readonlyMap : reactiveMap).get(target)
|
||||
) {
|
||||
return target
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user