mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-05-22 14:39:16 +08:00
fix(Swipe): incorrect lazy render when loop is false (#7465)
This commit is contained in:
parent
75dc483cd0
commit
faefd7ec85
@ -47,8 +47,8 @@ export default createComponent({
|
|||||||
|
|
||||||
const active = parent.activeIndicator;
|
const active = parent.activeIndicator;
|
||||||
const maxActive = parent.count - 1;
|
const maxActive = parent.count - 1;
|
||||||
const prevActive = active === 0 ? maxActive : active - 1;
|
const prevActive = active === 0 && parent.loop ? maxActive : active - 1;
|
||||||
const nextActive = active === maxActive ? 0 : active + 1;
|
const nextActive = active === maxActive && parent.loop ? 0 : active + 1;
|
||||||
|
|
||||||
return index === active || index === prevActive || index === nextActive;
|
return index === active || index === prevActive || index === nextActive;
|
||||||
},
|
},
|
||||||
|
@ -175,26 +175,58 @@ test('lazy-render prop', async () => {
|
|||||||
await later();
|
await later();
|
||||||
const items = wrapper.findAll('.van-swipe-item');
|
const items = wrapper.findAll('.van-swipe-item');
|
||||||
|
|
||||||
expect(items.at(0).contains('span')).toBeTruthy();
|
const expectRender = (results) => {
|
||||||
expect(items.at(1).contains('span')).toBeTruthy();
|
results.forEach((result, index) => {
|
||||||
expect(items.at(2).contains('span')).toBeFalsy();
|
expect(items.at(index).contains('span')).toEqual(result);
|
||||||
expect(items.at(3).contains('span')).toBeTruthy();
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
expectRender([true, true, false, true]);
|
||||||
|
|
||||||
wrapper.setData({ active: 1 });
|
wrapper.setData({ active: 1 });
|
||||||
expect(items.at(0).contains('span')).toBeTruthy();
|
expectRender([true, true, true, false]);
|
||||||
expect(items.at(1).contains('span')).toBeTruthy();
|
|
||||||
expect(items.at(2).contains('span')).toBeTruthy();
|
|
||||||
expect(items.at(3).contains('span')).toBeFalsy();
|
|
||||||
|
|
||||||
wrapper.setData({ active: 2 });
|
wrapper.setData({ active: 2 });
|
||||||
expect(items.at(0).contains('span')).toBeFalsy();
|
expectRender([false, true, true, true]);
|
||||||
expect(items.at(1).contains('span')).toBeTruthy();
|
|
||||||
expect(items.at(2).contains('span')).toBeTruthy();
|
|
||||||
expect(items.at(3).contains('span')).toBeTruthy();
|
|
||||||
|
|
||||||
wrapper.setData({ active: 3 });
|
wrapper.setData({ active: 3 });
|
||||||
expect(items.at(0).contains('span')).toBeTruthy();
|
expectRender([true, false, true, true]);
|
||||||
expect(items.at(1).contains('span')).toBeFalsy();
|
});
|
||||||
expect(items.at(2).contains('span')).toBeTruthy();
|
|
||||||
expect(items.at(3).contains('span')).toBeTruthy();
|
test('lazy-render prop when loop is false', async () => {
|
||||||
|
const wrapper = mount({
|
||||||
|
template: `
|
||||||
|
<van-swipe :initial-swipe="active" :loop="false" lazy-render>
|
||||||
|
<van-swipe-item><span>1</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>4</span></van-swipe-item>
|
||||||
|
</van-swipe>
|
||||||
|
`,
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
active: 0,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await later();
|
||||||
|
const items = wrapper.findAll('.van-swipe-item');
|
||||||
|
|
||||||
|
const expectRender = (results) => {
|
||||||
|
results.forEach((result, index) => {
|
||||||
|
expect(items.at(index).contains('span')).toEqual(result);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
expectRender([true, true, false, false]);
|
||||||
|
|
||||||
|
wrapper.setData({ active: 1 });
|
||||||
|
expectRender([true, true, true, false]);
|
||||||
|
|
||||||
|
wrapper.setData({ active: 2 });
|
||||||
|
expectRender([false, true, true, true]);
|
||||||
|
|
||||||
|
wrapper.setData({ active: 3 });
|
||||||
|
expectRender([false, false, true, true]);
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user