Mobx изменяет состояние наблюдаемой переменной через сеттеры - PullRequest
0 голосов
/ 28 апреля 2020

Я создал хранилище и сеттеры, которые должны изменять состояние наблюдаемых переменных после вызова сеттеров, я могу ссылаться на их состояние по умолчанию, но при попытке установить новое значение кажется, что ничего не происходит, может кто-нибудь посоветовать следующее и указать на что-то, что кажется подозрительным

 @observable isValidPassword = false;
@observable isPasswordMatched = false;

@action
setIsValid = (isValid) => {
    this.isValidPassword = isValid;
};

@action
setIsMatched = (isMatched) => {
    this.isPasswordMatched = isMatched;
};



 validatePassword = () => {
    const {password} = this.state;
    if (password.length === 0) {
        this.setState({validationError: null});
        this.props.validationPasswordStore.setIsValid(false);
    } else {
        const passwordValidation = RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[\\d@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,}$');
        if (passwordValidation.test(String(password))) {
            this.setState({validationError: null});
            this.props.validationPasswordStore.setIsValid(true);
        } else {
            this.setState({validationError: 'passwordPolicies'});
            this.props.validationPasswordStore.setIsValid(false);
        }
    }
};


checkPasswords = () => {
    const {password, confirmPassword} = this.state;
    if (confirmPassword.length === 0) {
        this.setState({matchingError: null});
        this.props.validationPasswordStore.setIsMatched(false);
    } else {
        if (password !== confirmPassword) {
            this.setState({matchingError: 'passwordDontMatch'});
            this.props.validationPasswordStore.setIsMatched(false);
        } else {
            this.setState({matchingError: null});
            this.props.validationPasswordStore.setIsMatched(true);
        }
    }

};

У меня есть инъекционная аннотация и наблюдатель поверх компонента, идея состоит в том, чтобы вызывать сеттеры в методе validate и вызывать состояние этих наблюдаемых переменных в другой компонент, например, чтобы кнопка была отключена в моем модальном окне

                              okButtonProps={{disabled: !(this.props.validationPasswordStore.isValidPassword && this.props.validationPasswordStore.isPasswordMatched)}}
...