[improvement] Badge: jsx (#2440)

This commit is contained in:
neverland 2019-01-05 15:44:27 +08:00 committed by GitHub
parent 1468f9e210
commit de9c7ffe0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 47 deletions

View File

@ -1,13 +1,3 @@
<template>
<div
:class="b()"
class="van-hairline--top-bottom"
>
<slot />
</div>
</template>
<script>
import create from '../utils/create'; import create from '../utils/create';
export default create({ export default create({
@ -30,6 +20,13 @@ export default create({
return { return {
badges: [] badges: []
}; };
},
render(h) {
return (
<div class={['van-hairline--top-bottom', this.b()]}>
{this.$slots.default}
</div>
);
} }
}); });
</script>

View File

@ -1,30 +1,9 @@
<template>
<a
:class="[b({ select }), 'van-hairline']"
:href="url"
@click="onClick"
>
<div :class="b('text')">
{{ title }}
<van-info
:info="info"
:class="b('info')"
/>
</div>
</a>
</template>
<script>
import Info from '../info'; import Info from '../info';
import create from '../utils/create'; import create from '../utils/create';
export default create({ export default create({
name: 'badge', name: 'badge',
components: {
[Info.name]: Info
},
props: { props: {
url: String, url: String,
info: [String, Number], info: [String, Number],
@ -50,9 +29,7 @@ export default create({
}, },
select() { select() {
return ( return this.parent.badges.indexOf(this) === +this.parent.activeKey;
this.parent.badges.indexOf(this) === +this.parent.activeKey
);
} }
}, },
@ -62,6 +39,20 @@ export default create({
this.$emit('click', index); this.$emit('click', index);
this.parent.$emit('change', index); this.parent.$emit('change', index);
} }
},
render(h) {
return (
<a
href={this.url}
class={[this.b({ select: this.select }), 'van-hairline']}
onClick={this.onClick}
>
<div class={this.b('text')}>
{this.title}
<Info info={this.info} class={this.b('info')} />
</div>
</a>
);
} }
}); });
</script>

View File

@ -4,24 +4,17 @@ exports[`renders demo correctly 1`] = `
<div> <div>
<div> <div>
<div class="van-hairline--top-bottom van-badge-group"><a class="van-badge van-badge--select van-hairline"> <div class="van-hairline--top-bottom van-badge-group"><a class="van-badge van-badge--select van-hairline">
<div class="van-badge__text"> <div class="van-badge__text">标签名称
标签名称
<!----> <!---->
</div> </div>
</a> <a class="van-badge van-hairline"> </a> <a class="van-badge van-hairline">
<div class="van-badge__text"> <div class="van-badge__text">标签名称<div class="van-info van-badge__info">8</div>
标签名称
<div class="van-info van-badge__info">8</div>
</div> </div>
</a> <a class="van-badge van-hairline"> </a> <a class="van-badge van-hairline">
<div class="van-badge__text"> <div class="van-badge__text">标签名称<div class="van-info van-badge__info">99</div>
标签名称
<div class="van-info van-badge__info">99</div>
</div> </div>
</a> <a class="van-badge van-hairline"> </a> <a class="van-badge van-hairline">
<div class="van-badge__text"> <div class="van-badge__text">标签名称<div class="van-info van-badge__info">99+</div>
标签名称
<div class="van-info van-badge__info">99+</div>
</div> </div>
</a></div> </a></div>
</div> </div>