[improvement] DatetimePicker: optimize render (#3996)

This commit is contained in:
neverland 2019-07-29 20:31:14 +08:00 committed by GitHub
parent 8c6b05aa62
commit a791e1e971
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 36 additions and 59 deletions

View File

@ -1,13 +1,11 @@
import { createNamespace } from '../utils';
import { isDate } from '../utils/validate/date';
import { padZero } from '../utils/format/string';
import { pickerProps } from '../picker/shared';
import { getTrueValue, getMonthEndDay } from './utils';
import { sharedProps, TimePickerMixin } from './shared';
import Picker from '../picker';
const currentYear = new Date().getFullYear();
const [createComponent, bem] = createNamespace('date-picker');
const [createComponent] = createNamespace('date-picker');
export default createComponent({
mixins: [TimePickerMixin],
@ -185,26 +183,5 @@ export default createComponent({
this.$refs.picker.setValues(values);
});
}
},
render() {
const props = {};
Object.keys(pickerProps).forEach(key => {
props[key] = this[key];
});
return (
<Picker
class={bem()}
ref="picker"
columns={this.columns}
onChange={this.onChange}
onConfirm={this.onConfirm}
onCancel={() => {
this.$emit('cancel');
}}
{...{ props }}
/>
);
}
});

View File

@ -1,11 +1,9 @@
import { createNamespace } from '../utils';
import { padZero } from '../utils/format/string';
import { range } from '../utils/format/number';
import { pickerProps } from '../picker/shared';
import { sharedProps, TimePickerMixin } from './shared';
import Picker from '../picker';
const [createComponent, bem] = createNamespace('time-picker');
const [createComponent] = createNamespace('time-picker');
export default createComponent({
mixins: [TimePickerMixin],
@ -93,26 +91,5 @@ export default createComponent({
this.$refs.picker.setValues(values);
});
}
},
render() {
const props = {};
Object.keys(pickerProps).forEach(key => {
props[key] = this[key];
});
return (
<Picker
class={bem()}
ref="picker"
columns={this.columns}
onChange={this.onChange}
onConfirm={this.onConfirm}
onCancel={() => {
this.$emit('cancel');
}}
{...{ props }}
/>
);
}
});

View File

@ -1,6 +1,7 @@
import { times } from './utils';
import { padZero } from '../utils/format/string';
import { pickerProps } from '../picker/shared';
import Picker from '../picker';
export const sharedProps = {
...pickerProps,
@ -66,6 +67,28 @@ export const TimePickerMixin = {
methods: {
onConfirm() {
this.$emit('confirm', this.innerValue);
},
onCancel() {
this.$emit('cancel');
}
},
render() {
const props = {};
Object.keys(pickerProps).forEach(key => {
props[key] = this[key];
});
return (
<Picker
ref="picker"
columns={this.columns}
onChange={this.onChange}
onConfirm={this.onConfirm}
onCancel={this.onCancel}
{...{ props }}
/>
);
}
};

View File

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`filter prop 1`] = `
<div class="van-picker van-date-picker">
<div class="van-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>
@ -63,7 +63,7 @@ exports[`filter prop 1`] = `
`;
exports[`formatter prop 1`] = `
<div class="van-picker van-date-picker">
<div class="van-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>

View File

@ -3,7 +3,7 @@
exports[`renders demo correctly 1`] = `
<div>
<div>
<div class="van-picker van-date-picker van-datetime-picker">
<div class="van-picker van-datetime-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>
@ -166,7 +166,7 @@ exports[`renders demo correctly 1`] = `
</div>
</div>
<div>
<div class="van-picker van-date-picker van-datetime-picker">
<div class="van-picker van-datetime-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>
@ -247,7 +247,7 @@ exports[`renders demo correctly 1`] = `
</div>
</div>
<div>
<div class="van-picker van-date-picker van-datetime-picker">
<div class="van-picker van-datetime-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>
@ -293,7 +293,7 @@ exports[`renders demo correctly 1`] = `
</div>
</div>
<div>
<div class="van-picker van-time-picker van-datetime-picker">
<div class="van-picker van-datetime-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>
@ -386,7 +386,7 @@ exports[`renders demo correctly 1`] = `
</div>
</div>
<div>
<div class="van-picker van-time-picker van-datetime-picker">
<div class="van-picker van-datetime-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>

View File

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`filter prop 1`] = `
<div class="van-picker van-time-picker">
<div class="van-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>
@ -35,7 +35,7 @@ exports[`filter prop 1`] = `
`;
exports[`format initial value 1`] = `
<div class="van-picker van-time-picker">
<div class="van-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>
@ -62,7 +62,7 @@ exports[`format initial value 1`] = `
`;
exports[`formatter prop 1`] = `
<div class="van-picker van-time-picker">
<div class="van-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>
@ -96,7 +96,7 @@ exports[`formatter prop 1`] = `
`;
exports[`max-hour & max-minute 1`] = `
<div class="van-picker van-time-picker">
<div class="van-picker">
<div class="van-hairline--top-bottom van-picker__toolbar">
<div role="button" tabindex="0" class="van-picker__cancel">取消</div>
<div role="button" tabindex="0" class="van-picker__confirm">确认</div>