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) {
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>
`;
exports[`rendered event 1`] = `<div role="tabpanel" class="van-tab__pane" style="">Text</div>`;
exports[`scrollspy 1`] = `
<div class="van-tabs van-tabs--line">
<div>

View File

@ -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);
});