diff --git a/src/swipe-item/index.js b/src/swipe-item/index.js
index 9099ec32b..8039d0996 100644
--- a/src/swipe-item/index.js
+++ b/src/swipe-item/index.js
@@ -9,6 +9,7 @@ export default createComponent({
data() {
return {
offset: 0,
+ inited: false,
mounted: false,
};
},
@@ -34,9 +35,9 @@ export default createComponent({
},
shouldRender() {
- const { index, parent, mounted } = this;
+ const { index, inited, parent, mounted } = this;
- if (!parent.lazyRender) {
+ if (!parent.lazyRender || inited) {
return true;
}
@@ -49,8 +50,14 @@ export default createComponent({
const maxActive = parent.count - 1;
const prevActive = active === 0 && parent.loop ? maxActive : 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;
},
},
diff --git a/src/swipe/test/index.spec.js b/src/swipe/test/index.spec.js
index 613ca97a7..bf737c9fd 100644
--- a/src/swipe/test/index.spec.js
+++ b/src/swipe/test/index.spec.js
@@ -163,6 +163,7 @@ test('lazy-render prop', async () => {
2
3
4
+ 5
`,
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 });
- expectRender([true, true, true, false]);
+ expectRender([true, true, true, false, true]);
wrapper.setData({ active: 2 });
- expectRender([false, true, true, true]);
-
- wrapper.setData({ active: 3 });
- expectRender([true, false, true, true]);
+ expectRender([true, true, true, true, true]);
});
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]);
wrapper.setData({ active: 2 });
- expectRender([false, true, true, true]);
-
- wrapper.setData({ active: 3 });
- expectRender([false, false, true, true]);
+ expectRender([true, true, true, true]);
});