apiCreateFragment.spec.ts 740 B

123456789101112131415161718192021222324252627282930
  1. import { nextTick, ref } from 'vue'
  2. import { createKeyedFragment, template } from '../src'
  3. import { makeRender } from './_utils'
  4. const define = makeRender()
  5. describe('api: createKeyedFragment', () => {
  6. test('basic', async () => {
  7. const key = ref(0)
  8. const { host } = define({
  9. setup() {
  10. return createKeyedFragment(
  11. () => key.value,
  12. () => {
  13. const n0 = template(`<div>Item 0</div>`)() as any
  14. n0.$key = key.value
  15. return n0
  16. },
  17. )
  18. },
  19. }).render()
  20. expect(host.children.length).toBe(1)
  21. expect((host.children[0] as any).$key).toBe(0)
  22. key.value = 1
  23. await nextTick()
  24. expect((host.children[0] as any).$key).toBe(1)
  25. })
  26. })