mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
refactor(Sku): simplify SkuRow props
This commit is contained in:
parent
ada23d9ebe
commit
f555ebb030
@ -678,11 +678,7 @@ export default createComponent({
|
|||||||
(this.hasSkuOrAttr && (
|
(this.hasSkuOrAttr && (
|
||||||
<div class={this.skuGroupClass}>
|
<div class={this.skuGroupClass}>
|
||||||
{this.skuTree.map((skuTreeItem) => (
|
{this.skuTree.map((skuTreeItem) => (
|
||||||
<SkuRow
|
<SkuRow item={skuTreeItem}>
|
||||||
skuRow={skuTreeItem}
|
|
||||||
largeImageMode={skuTreeItem.largeImageMode}
|
|
||||||
hasScrollTab={skuTreeItem.v.length > 6}
|
|
||||||
>
|
|
||||||
{skuTreeItem.v.map((skuValue, itemIndex) => (
|
{skuTreeItem.v.map((skuValue, itemIndex) => (
|
||||||
<template
|
<template
|
||||||
slot={
|
slot={
|
||||||
@ -707,7 +703,7 @@ export default createComponent({
|
|||||||
</SkuRow>
|
</SkuRow>
|
||||||
))}
|
))}
|
||||||
{this.propList.map((skuTreeItem) => (
|
{this.propList.map((skuTreeItem) => (
|
||||||
<SkuRow skuRow={skuTreeItem}>
|
<SkuRow item={skuTreeItem}>
|
||||||
{skuTreeItem.v.map((skuValue) => (
|
{skuTreeItem.v.map((skuValue) => (
|
||||||
<SkuRowPropItem
|
<SkuRowPropItem
|
||||||
skuValue={skuValue}
|
skuValue={skuValue}
|
||||||
|
@ -8,28 +8,20 @@ const [createComponent, bem, t] = createNamespace('sku-row');
|
|||||||
export default createComponent({
|
export default createComponent({
|
||||||
mixins: [
|
mixins: [
|
||||||
BindEventMixin(function (bind) {
|
BindEventMixin(function (bind) {
|
||||||
if (!(this.largeImageMode && this.hasScrollTab)) {
|
if (this.scrollable) {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.scrollCon) {
|
if (!this.scrollCon) {
|
||||||
this.scrollCon = this.$refs.skuContent;
|
this.scrollCon = this.$refs.skuContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
bind(this.scrollCon, 'scroll', this.onScroll);
|
bind(this.scrollCon, 'scroll', this.onScroll);
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
skuRow: Object,
|
item: Object,
|
||||||
largeImageMode: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
hasScrollTab: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
present: 0,
|
present: 0,
|
||||||
@ -38,17 +30,21 @@ export default createComponent({
|
|||||||
scrollLeft: 0,
|
scrollLeft: 0,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
scrollable() {
|
||||||
|
return this.item.largeImageMode && this.item.v.length > 6;
|
||||||
|
},
|
||||||
|
|
||||||
scrollStyle() {
|
scrollStyle() {
|
||||||
if (!(this.largeImageMode && this.hasScrollTab)) {
|
if (this.scrollable) {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.tranX = this.present * 20;
|
|
||||||
return {
|
return {
|
||||||
transform: `translate3d(${this.tranX}px, 0, 0)`,
|
transform: `translate3d(${this.present * 20}px, 0, 0)`,
|
||||||
};
|
};
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onScroll() {
|
onScroll() {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
@ -59,11 +55,15 @@ export default createComponent({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { skuRow, largeImageMode, hasScrollTab } = this;
|
const { item, scrollable } = this;
|
||||||
const multipleNode = skuRow.is_multiple && (
|
const { largeImageMode } = item;
|
||||||
|
|
||||||
|
const multipleNode = item.is_multiple && (
|
||||||
<span class={bem('title-multiple')}>({t('multiple')})</span>
|
<span class={bem('title-multiple')}>({t('multiple')})</span>
|
||||||
);
|
);
|
||||||
|
|
||||||
const SkuScroll = (
|
const SkuScroll = (
|
||||||
<div class={bem('scroll')}>
|
<div class={bem('scroll')}>
|
||||||
<div class={bem('scroll__content')} ref="skuScroll">
|
<div class={bem('scroll__content')} ref="skuScroll">
|
||||||
@ -85,14 +85,15 @@ export default createComponent({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class={[bem(), BORDER_BOTTOM, largeImageMode && bem('picture')]}>
|
<div class={[bem(), BORDER_BOTTOM, largeImageMode && bem('picture')]}>
|
||||||
<div class={bem('title')}>
|
<div class={bem('title')}>
|
||||||
{skuRow.k}
|
{item.k}
|
||||||
{multipleNode}
|
{multipleNode}
|
||||||
</div>
|
</div>
|
||||||
{largeImageMode ? SkuContent : this.slots()}
|
{largeImageMode ? SkuContent : this.slots()}
|
||||||
{largeImageMode && hasScrollTab && SkuScroll}
|
{largeImageMode && scrollable && SkuScroll}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user