diff --git a/src/tab/index.js b/src/tab/index.js
index 45856531d..2e6a738c6 100644
--- a/src/tab/index.js
+++ b/src/tab/index.js
@@ -45,7 +45,9 @@ export default createComponent({
inited(val) {
if (this.parent.lazyRender && val) {
- this.parent.$emit('rendered', this.computedName, this.title);
+ this.$nextTick(() => {
+ this.parent.$emit('rendered', this.computedName, this.title);
+ });
}
}
},
diff --git a/src/tab/test/__snapshots__/index.spec.js.snap b/src/tab/test/__snapshots__/index.spec.js.snap
index 85aa995d3..8f9fbc505 100644
--- a/src/tab/test/__snapshots__/index.spec.js.snap
+++ b/src/tab/test/__snapshots__/index.spec.js.snap
@@ -223,6 +223,8 @@ exports[`render nav-left & nav-right slot 1`] = `
`;
+exports[`rendered event 1`] = `
Text
`;
+
exports[`scrollspy 1`] = `
diff --git a/src/tab/test/index.spec.js b/src/tab/test/index.spec.js
index 3af15024d..52b84a628 100644
--- a/src/tab/test/index.spec.js
+++ b/src/tab/test/index.spec.js
@@ -294,7 +294,7 @@ test('scrollspy', async () => {
expect(onChange).toHaveBeenCalledWith('c', 'title3');
});
-test('rendered event', () => {
+test('rendered event', async () => {
const onRendered = jest.fn();
const wrapper = mount({
@@ -314,15 +314,19 @@ test('rendered event', () => {
}
});
+ await later();
expect(onRendered).toHaveBeenCalledWith('a', 'title1');
+ expect(wrapper.find('.van-tab__pane')).toMatchSnapshot();
const tabs = wrapper.findAll('.van-tab');
tabs.at(1).trigger('click');
tabs.at(0).trigger('click');
+
+ await later();
expect(onRendered).toHaveBeenCalledTimes(2);
});
-test('should not trigger rendered event when disable lazy-render', () => {
+test('should not trigger rendered event when disable lazy-render', async () => {
const onRendered = jest.fn();
mount({
@@ -337,5 +341,6 @@ test('should not trigger rendered event when disable lazy-render', () => {
}
});
+ await later();
expect(onRendered).toHaveBeenCalledTimes(0);
});