Skip to content

Commit 5ab4f74

Browse files
authored
fix: display injection of 'symbol' key (#1648)
1 parent 280df1b commit 5ab4f74

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

packages/app-backend-vue3/src/components/data.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,30 +223,32 @@ function processAttrs (instance) {
223223
}
224224

225225
function processProvide (instance) {
226-
return Object.keys(instance.provides)
226+
return Reflect.ownKeys(instance.provides)
227227
.map(key => ({
228228
type: 'provided',
229-
key,
229+
key: key.toString(),
230230
value: returnError(() => instance.provides[key]),
231231
}))
232232
}
233233

234234
function processInject (instance, mergedType) {
235235
if (!mergedType?.inject) return []
236236
let keys = []
237+
let defaultValue
237238
if (Array.isArray(mergedType.inject)) {
238239
keys = mergedType.inject.map(key => ({
239240
key,
240241
originalKey: key,
241242
}))
242243
} else {
243-
keys = Object.keys(mergedType.inject).map(key => {
244+
keys = Reflect.ownKeys(mergedType.inject).map(key => {
244245
const value = mergedType.inject[key]
245246
let originalKey
246-
if (typeof value === 'string') {
247+
if (typeof value === 'string' || typeof value === 'symbol') {
247248
originalKey = value
248249
} else {
249250
originalKey = value.from
251+
defaultValue = value.default
250252
}
251253
return {
252254
key,
@@ -256,8 +258,8 @@ function processInject (instance, mergedType) {
256258
}
257259
return keys.map(({ key, originalKey }) => ({
258260
type: 'injected',
259-
key: originalKey && key !== originalKey ? `${originalKey}${key}` : key,
260-
value: returnError(() => instance.ctx[key]),
261+
key: originalKey && key !== originalKey ? `${originalKey.toString()}${key.toString()}` : key.toString(),
262+
value: returnError(() => instance.ctx[key] || instance.provides[originalKey] || defaultValue),
261263
}))
262264
}
263265

packages/shell-dev-vue3/src/Provide.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
<script>
66
import { provide, inject } from 'vue'
77
8+
const symbolForInject = Symbol('inject')
9+
const symbolForSetup = Symbol('setup')
10+
811
export default {
912
components: {
1013
Inject: {
@@ -22,10 +25,11 @@ export default {
2225
template: '<div>nested inject: {{ renamed }} missing: {{ missing }}</div>',
2326
},
2427
},
25-
inject: ['injectedData'],
28+
inject: ['injectedData', symbolForInject],
2629
setup () {
2730
return {
2831
comingFromSetup: inject('fromSetup'),
32+
comingFromSymbol: inject(symbolForSetup),
2933
}
3034
},
3135
template: '<div>injected: {{ injectedData }} | {{ comingFromSetup }}<NestedInject /></div>',
@@ -35,11 +39,13 @@ export default {
3539
provide () {
3640
return {
3741
injectedData: 'bar',
42+
[symbolForInject]: 'foo',
3843
}
3944
},
4045
4146
setup () {
4247
provide('fromSetup', 'Setup!!')
48+
provide(symbolForSetup, 'Symbol from Setup')
4349
},
4450
}
4551
</script>

0 commit comments

Comments
 (0)