mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
fix(Swipe): item should only rendered once (#7466)
This commit is contained in:
parent
faefd7ec85
commit
818192c1c8
@ -9,6 +9,7 @@ export default createComponent({
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
offset: 0,
|
offset: 0,
|
||||||
|
inited: false,
|
||||||
mounted: false,
|
mounted: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -34,9 +35,9 @@ export default createComponent({
|
|||||||
},
|
},
|
||||||
|
|
||||||
shouldRender() {
|
shouldRender() {
|
||||||
const { index, parent, mounted } = this;
|
const { index, inited, parent, mounted } = this;
|
||||||
|
|
||||||
if (!parent.lazyRender) {
|
if (!parent.lazyRender || inited) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,8 +50,14 @@ export default createComponent({
|
|||||||
const maxActive = parent.count - 1;
|
const maxActive = parent.count - 1;
|
||||||
const prevActive = active === 0 && parent.loop ? maxActive : active - 1;
|
const prevActive = active === 0 && parent.loop ? maxActive : active - 1;
|
||||||
const nextActive = active === maxActive && parent.loop ? 0 : active + 1;
|
const nextActive = active === maxActive && parent.loop ? 0 : active + 1;
|
||||||
|
const shouldRender =
|
||||||
|
index === active || index === prevActive || index === nextActive;
|
||||||
|
|
||||||
return index === active || index === prevActive || index === nextActive;
|
if (shouldRender) {
|
||||||
|
this.inited = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return shouldRender;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -163,6 +163,7 @@ test('lazy-render prop', async () => {
|
|||||||
<van-swipe-item><span>2</span></van-swipe-item>
|
<van-swipe-item><span>2</span></van-swipe-item>
|
||||||
<van-swipe-item><span>3</span></van-swipe-item>
|
<van-swipe-item><span>3</span></van-swipe-item>
|
||||||
<van-swipe-item><span>4</span></van-swipe-item>
|
<van-swipe-item><span>4</span></van-swipe-item>
|
||||||
|
<van-swipe-item><span>5</span></van-swipe-item>
|
||||||
</van-swipe>
|
</van-swipe>
|
||||||
`,
|
`,
|
||||||
data() {
|
data() {
|
||||||
@ -181,16 +182,13 @@ test('lazy-render prop', async () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
expectRender([true, true, false, true]);
|
expectRender([true, true, false, false, true]);
|
||||||
|
|
||||||
wrapper.setData({ active: 1 });
|
wrapper.setData({ active: 1 });
|
||||||
expectRender([true, true, true, false]);
|
expectRender([true, true, true, false, true]);
|
||||||
|
|
||||||
wrapper.setData({ active: 2 });
|
wrapper.setData({ active: 2 });
|
||||||
expectRender([false, true, true, true]);
|
expectRender([true, true, true, true, true]);
|
||||||
|
|
||||||
wrapper.setData({ active: 3 });
|
|
||||||
expectRender([true, false, true, true]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('lazy-render prop when loop is false', async () => {
|
test('lazy-render prop when loop is false', async () => {
|
||||||
@ -225,8 +223,5 @@ test('lazy-render prop when loop is false', async () => {
|
|||||||
expectRender([true, true, true, false]);
|
expectRender([true, true, true, false]);
|
||||||
|
|
||||||
wrapper.setData({ active: 2 });
|
wrapper.setData({ active: 2 });
|
||||||
expectRender([false, true, true, true]);
|
expectRender([true, true, true, true]);
|
||||||
|
|
||||||
wrapper.setData({ active: 3 });
|
|
||||||
expectRender([false, false, true, true]);
|
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user