这里我用计算属性containYears
(数组),循环生成Select的选项,奇怪的是containYears
返回的数组更新了,里面的console.log也打印了,为什么页面不重新渲染呢?这里我如果把返回的数组arr.join(',')变成字符串就可以正常重新渲染,求解原因?
export class DatePickStore {
@observable dateBegin: Moment | null = moment(new Date()).subtract(
1,
'months'
);
@observable dateEnd: Moment | null = moment(new Date());
// 时间段包含年数
@computed get containYears() {
console.log('更新了');
let res: number[] = [];
if (this.dateBegin && this.dateEnd) {
const begin = this.dateBegin.year();
const end = this.dateEnd.year();
const diff = end - begin;
if (diff > 0) {
for (let i = 0; i < diff + 1; i++) {
res.push(end - i);
}
} else {
res = [end];
}
}
return res.slice();
}
}
<SelectdefaultValue="全部">
{containYears.length > 0 &&
containYears.map((item, index) => (
<Select.Option
value={item}
key={index}
>
{item}年
</Select.Option>
))}
</Select>