Mobx计算属性返回数组问题?

这里我用计算属性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>
阅读 1.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题