Skip to content

Commit 1282a70

Browse files
committed
chore: update tests
1 parent 7b1b7cf commit 1282a70

File tree

4 files changed

+29
-7
lines changed

4 files changed

+29
-7
lines changed

packages/runtime-core/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,4 +565,4 @@ export { createInternalObject } from './internalObject'
565565
/**
566566
* @internal
567567
*/
568-
export { validateTemplateRef } from './rendererTemplateRef'
568+
export { createCanSetSetupRefChecker } from './rendererTemplateRef'

packages/runtime-core/src/rendererTemplateRef.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export function setRef(
7777
const oldRef = oldRawRef && (oldRawRef as VNodeNormalizedRefAtom).r
7878
const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs
7979
const setupState = owner.setupState
80-
const canSetSetupRef = validateTemplateRef(setupState)
80+
const canSetSetupRef = createCanSetSetupRefChecker(setupState)
8181

8282
// dynamic ref changed. unset old ref
8383
if (oldRef != null && oldRef !== ref) {
@@ -148,7 +148,7 @@ export function setRef(
148148
}
149149
}
150150

151-
export function validateTemplateRef(
151+
export function createCanSetSetupRefChecker(
152152
setupState: Data,
153153
): (key: string) => boolean {
154154
const rawSetupState = toRaw(setupState)

packages/runtime-vapor/__tests__/dom/templateRef.spec.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
nextTick,
2020
reactive,
2121
ref,
22+
shallowRef,
2223
useTemplateRef,
2324
watchEffect,
2425
} from '@vue/runtime-dom'
@@ -208,8 +209,8 @@ describe('api: template ref', () => {
208209
const { render } = define({
209210
setup() {
210211
return {
211-
foo: fooEl,
212-
bar: barEl,
212+
foo: shallowRef(fooEl),
213+
bar: shallowRef(barEl),
213214
}
214215
},
215216
render() {
@@ -251,6 +252,7 @@ describe('api: template ref', () => {
251252
})
252253
const { host } = render()
253254
expect(state.refKey).toBe(host.children[0])
255+
expect('Template ref "refKey" used on a non-ref value').toHaveBeenWarned()
254256
})
255257

256258
test('multiple root refs', () => {
@@ -713,6 +715,26 @@ describe('api: template ref', () => {
713715
expect(html()).toBe('<div>changed</div><!--dynamic-component-->')
714716
})
715717

718+
test('should not attempt to set when variable name is same as key', () => {
719+
let tRef: ShallowRef
720+
const key = 'refKey'
721+
define({
722+
setup() {
723+
tRef = useTemplateRef('_')
724+
return {
725+
[key]: tRef,
726+
}
727+
},
728+
render() {
729+
const n0 = template('<div></div>')() as Element
730+
createTemplateRefSetter()(n0, key)
731+
return n0
732+
},
733+
}).render()
734+
expect('target is readonly').not.toHaveBeenWarned()
735+
expect(tRef!.value).toBe(null)
736+
})
737+
716738
// TODO: can not reproduce in Vapor
717739
// // #2078
718740
// test('handling multiple merged refs', async () => {

packages/runtime-vapor/src/apiTemplateRef.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import {
99
ErrorCodes,
1010
type SchedulerJob,
1111
callWithErrorHandling,
12+
createCanSetSetupRefChecker,
1213
queuePostFlushCb,
13-
validateTemplateRef,
1414
warn,
1515
} from '@vue/runtime-dom'
1616
import {
@@ -56,7 +56,7 @@ export function setRef(
5656
const refs =
5757
instance.refs === EMPTY_OBJ ? (instance.refs = {}) : instance.refs
5858

59-
const canSetSetupRef = validateTemplateRef(setupState)
59+
const canSetSetupRef = createCanSetSetupRefChecker(setupState)
6060
// dynamic ref changed. unset old ref
6161
if (oldRef != null && oldRef !== ref) {
6262
if (isString(oldRef)) {

0 commit comments

Comments
 (0)