fix(Tab): add nextTick to ensure rendered (#5327)

This commit is contained in:
neverland 2019-12-20 10:43:32 +08:00 committed by GitHub
parent fb59e39622
commit cd2faa2e02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 3 deletions

View File

@ -45,7 +45,9 @@ export default createComponent({
inited(val) { inited(val) {
if (this.parent.lazyRender && val) { if (this.parent.lazyRender && val) {
this.parent.$emit('rendered', this.computedName, this.title); this.$nextTick(() => {
this.parent.$emit('rendered', this.computedName, this.title);
});
} }
} }
}, },

View File

@ -223,6 +223,8 @@ exports[`render nav-left & nav-right slot 1`] = `
</div> </div>
`; `;
exports[`rendered event 1`] = `<div role="tabpanel" class="van-tab__pane" style="">Text</div>`;
exports[`scrollspy 1`] = ` exports[`scrollspy 1`] = `
<div class="van-tabs van-tabs--line"> <div class="van-tabs van-tabs--line">
<div> <div>

View File

@ -294,7 +294,7 @@ test('scrollspy', async () => {
expect(onChange).toHaveBeenCalledWith('c', 'title3'); expect(onChange).toHaveBeenCalledWith('c', 'title3');
}); });
test('rendered event', () => { test('rendered event', async () => {
const onRendered = jest.fn(); const onRendered = jest.fn();
const wrapper = mount({ const wrapper = mount({
@ -314,15 +314,19 @@ test('rendered event', () => {
} }
}); });
await later();
expect(onRendered).toHaveBeenCalledWith('a', 'title1'); expect(onRendered).toHaveBeenCalledWith('a', 'title1');
expect(wrapper.find('.van-tab__pane')).toMatchSnapshot();
const tabs = wrapper.findAll('.van-tab'); const tabs = wrapper.findAll('.van-tab');
tabs.at(1).trigger('click'); tabs.at(1).trigger('click');
tabs.at(0).trigger('click'); tabs.at(0).trigger('click');
await later();
expect(onRendered).toHaveBeenCalledTimes(2); 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(); const onRendered = jest.fn();
mount({ mount({
@ -337,5 +341,6 @@ test('should not trigger rendered event when disable lazy-render', () => {
} }
}); });
await later();
expect(onRendered).toHaveBeenCalledTimes(0); expect(onRendered).toHaveBeenCalledTimes(0);
}); });