feat(runtime-core): explicit expose API
This commit is contained in:
98
packages/runtime-core/__tests__/apiExpose.spec.ts
Normal file
98
packages/runtime-core/__tests__/apiExpose.spec.ts
Normal file
@@ -0,0 +1,98 @@
|
||||
import { nodeOps, render } from '@vue/runtime-test'
|
||||
import { defineComponent, h, ref } from '../src'
|
||||
|
||||
describe('api: expose', () => {
|
||||
test('via setup context', () => {
|
||||
const Child = defineComponent({
|
||||
render() {},
|
||||
setup(_, { expose }) {
|
||||
expose({
|
||||
foo: ref(1),
|
||||
bar: ref(2)
|
||||
})
|
||||
return {
|
||||
bar: ref(3),
|
||||
baz: ref(4)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const childRef = ref()
|
||||
const Parent = {
|
||||
setup() {
|
||||
return () => h(Child, { ref: childRef })
|
||||
}
|
||||
}
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Parent), root)
|
||||
expect(childRef.value).toBeTruthy()
|
||||
expect(childRef.value.foo).toBe(1)
|
||||
expect(childRef.value.bar).toBe(2)
|
||||
expect(childRef.value.baz).toBeUndefined()
|
||||
})
|
||||
|
||||
test('via options', () => {
|
||||
const Child = defineComponent({
|
||||
render() {},
|
||||
data() {
|
||||
return {
|
||||
foo: 1
|
||||
}
|
||||
},
|
||||
setup() {
|
||||
return {
|
||||
bar: ref(2),
|
||||
baz: ref(3)
|
||||
}
|
||||
},
|
||||
expose: ['foo', 'bar']
|
||||
})
|
||||
|
||||
const childRef = ref()
|
||||
const Parent = {
|
||||
setup() {
|
||||
return () => h(Child, { ref: childRef })
|
||||
}
|
||||
}
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Parent), root)
|
||||
expect(childRef.value).toBeTruthy()
|
||||
expect(childRef.value.foo).toBe(1)
|
||||
expect(childRef.value.bar).toBe(2)
|
||||
expect(childRef.value.baz).toBeUndefined()
|
||||
})
|
||||
|
||||
test('options + context', () => {
|
||||
const Child = defineComponent({
|
||||
render() {},
|
||||
expose: ['foo'],
|
||||
data() {
|
||||
return {
|
||||
foo: 1
|
||||
}
|
||||
},
|
||||
setup(_, { expose }) {
|
||||
expose({
|
||||
bar: ref(2)
|
||||
})
|
||||
return {
|
||||
bar: ref(3),
|
||||
baz: ref(4)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const childRef = ref()
|
||||
const Parent = {
|
||||
setup() {
|
||||
return () => h(Child, { ref: childRef })
|
||||
}
|
||||
}
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Parent), root)
|
||||
expect(childRef.value).toBeTruthy()
|
||||
expect(childRef.value.foo).toBe(1)
|
||||
expect(childRef.value.bar).toBe(2)
|
||||
expect(childRef.value.baz).toBeUndefined()
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user