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

发布于 2022-09-12 03:11:44 字数 1649 浏览 31 评论 0

这里我用计算属性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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文