首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >观察计算属性的mobx计算属性不重新计算。

观察计算属性的mobx计算属性不重新计算。
EN

Stack Overflow用户
提问于 2017-04-20 11:48:59
回答 1查看 691关注 0票数 0

我有以下两个计算属性,第一个基于可观测的password

代码语言:javascript
复制
@observable password = '';

@computed
get passwordRules() {
    return [
        {isValid: !!((this.password.length >= 8) && (this.password.indexOf(' ') < 0 )), label: pageConstants.TIP_1},
        {isValid: !!this.password.match('^(?=.*[A-Z])'), label: pageConstants.TIP_2},
        {isValid: !!this.password.match('^(?=.*[a-z])'), label: pageConstants.TIP_3},
        {isValid: !!this.password.match('^(?=.*[0-9])'), label: pageConstants.TIP_4},
        {isValid: !!this.password.match('^(?=.*[-~!@#€=?_<>£"{}\[\\]\+\(\)\$%\^&\*])'), label: pageConstants.TIP_5}
    ];
}

@computed
get passwordIsValid() {
    return !some(this.passwordRules, rule => !rule.isValid);
}

每当passwordIsValid数组中的任何项发生更改时,我都希望passwordRules重新计算,但这种情况目前没有发生。

passwordIsValid只在第一次被调用时才被访问,并且当isValid属性在passwordRules数组中发生任何变化时都不会重新计算。

EN

回答 1

Stack Overflow用户

发布于 2017-04-20 11:58:29

请注意,passwordRules不返回可观察到的内容,因此MobX没有任何可跟踪的内容。如果您打算在将来修改它们,您可能需要@observable passwordRules = [{ isValid ... }]。您似乎将passwordRules处理为状态,而不是派生值(不应在派生时直接修改)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43518693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档