Я создал хранилище и сеттеры, которые должны изменять состояние наблюдаемых переменных после вызова сеттеров, я могу ссылаться на их состояние по умолчанию, но при попытке установить новое значение кажется, что ничего не происходит, может кто-нибудь посоветовать следующее и указать на что-то, что кажется подозрительным
@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)}}