chore(Swipe): use relation

This commit is contained in:
chenjiahan 2020-09-26 11:05:39 +08:00
parent 75a8a394ca
commit c175cdd2bb
2 changed files with 22 additions and 19 deletions

View File

@ -1,7 +1,8 @@
import { computed, nextTick, onMounted, reactive } from 'vue'; import { computed, nextTick, onMounted, reactive } from 'vue';
import { SWIPE_KEY } from '../swipe'; import { SWIPE_KEY } from '../swipe';
import { createNamespace } from '../utils'; import { createNamespace } from '../utils';
import { useParent } from '../composition/use-parent'; import { useExpose } from '../composition/use-expose';
import { useParent } from '../composition/use-relation';
const [createComponent, bem] = createNamespace('swipe-item'); const [createComponent, bem] = createNamespace('swipe-item');
@ -12,17 +13,7 @@ export default createComponent({
mounted: false, mounted: false,
}); });
const setOffset = (offset) => { const { parent, index } = useParent(SWIPE_KEY);
state.offset = offset;
};
const { parent, index } = useParent(SWIPE_KEY, { setOffset });
onMounted(() => {
nextTick(() => {
state.mounted = true;
});
});
const style = computed(() => { const style = computed(() => {
const style = {}; const style = {};
@ -55,6 +46,18 @@ export default createComponent({
return index.value >= prevActive || index.value <= nextActive; return index.value >= prevActive || index.value <= nextActive;
}); });
const setOffset = (offset) => {
state.offset = offset;
};
onMounted(() => {
nextTick(() => {
state.mounted = true;
});
});
useExpose({ setOffset });
return () => ( return () => (
<div class={bem()} style={style.value}> <div class={bem()} style={style.value}>
{shouldRender.value ? slots.default?.() : null} {shouldRender.value ? slots.default?.() : null}

View File

@ -1,7 +1,6 @@
import { import {
ref, ref,
watch, watch,
provide,
reactive, reactive,
computed, computed,
onMounted, onMounted,
@ -18,10 +17,11 @@ import { doubleRaf } from '../utils/dom/raf';
import { preventDefault } from '../utils/dom/event'; import { preventDefault } from '../utils/dom/event';
// Composition // Composition
import { useTouch } from '../composition/use-touch';
import { useRect } from '../composition/use-rect';
import { useExpose } from '../composition/use-expose';
import { usePageVisibility, useWindowSize } from '@vant/use'; import { usePageVisibility, useWindowSize } from '@vant/use';
import { useRect } from '../composition/use-rect';
import { useTouch } from '../composition/use-touch';
import { useExpose } from '../composition/use-expose';
import { useChildren } from '../composition/use-relation';
const [createComponent, bem] = createNamespace('swipe'); const [createComponent, bem] = createNamespace('swipe');
@ -73,10 +73,10 @@ export default createComponent({
active: 0, active: 0,
swiping: false, swiping: false,
}); });
const children = reactive([]);
const touch = useTouch(); const touch = useTouch();
const windowSize = useWindowSize(); const windowSize = useWindowSize();
const { children, linkChildren } = useChildren(SWIPE_KEY);
const count = computed(() => children.length); const count = computed(() => children.length);
@ -370,9 +370,9 @@ export default createComponent({
swipeTo, swipeTo,
}); });
provide(SWIPE_KEY, { size, props, count, children, activeIndicator }); linkChildren({ size, props, count, activeIndicator });
watch([children, () => props.initialSwipe], initialize); watch([() => children.length, () => props.initialSwipe], initialize);
watch( watch(
() => props.autoplay, () => props.autoplay,