Ecmascript 6 如果对象属性与ES6有条件地存在,您将如何向其添加附加?
想象一下,如果有一个对象具有以下属性Ecmascript 6 如果对象属性与ES6有条件地存在,您将如何向其添加附加?,ecmascript-6,javascript-objects,Ecmascript 6,Javascript Objects,想象一下,如果有一个对象具有以下属性 var rules = { confirmedPassword: 'required|min:4|max:10', } 我想要的是: rules = { rules.confirmedPassword && {...rules.confirmedPassword, rules.confirmedPassword: '|same:password'}} 为此: rules = {confirmedPassword: 'required|m
var rules = {
confirmedPassword: 'required|min:4|max:10',
}
我想要的是:
rules = { rules.confirmedPassword && {...rules.confirmedPassword, rules.confirmedPassword: '|same:password'}}
为此:
rules = {confirmedPassword: 'required|min:4|max:10|same:password',}
原因是,在react中,我在函数中使用event.target
,以便稍后执行验证
因此,如果用户用name=“confirmPassword”
点击input
元素,不仅会有默认值required | min:4 | max:10
,而且实际上“required | min:4 | max:10 | same:password”代码>
validateInputs(event) {
var { password, confirmPassword } = this.state;
var { name, value } = event.target;
var data = {
password: password,
confirmPassword: confirmPassword
};
var rules = {};
rules[name] = 'required|min:4|max:10';
var messages = {
'password.min': 'Password is too short.',
'password.max': 'Password is too long.',
'confirmPassword.min': 'Password is too short.',
'confirmPassword.max': 'Password is too long.'
};
validate(data, rules, messages)
.then(feedback => console.log(feedback))
.catch(errors => console.log('foo', errors));
this.setState({
[name]: value
});
}
提前谢谢 您可以做的是将属性存储在一个数组中,然后将它们合并和/或删除
例如,假设您有4个输入,您可以像这样拥有整个组件:
import React from 'react';
export default class TestComponent extends React.Component {
DEFAULT_RULES = ['required', 'min:4', 'max:10'];
validateInputs(event) {
const { password, confirmPassword } = this.state;
const { name, value } = event.target;
// This can be done this way in ES6, you don't need to do password: password
const data = {
password,
confirmPassword
};
let rules = {};
const rulesArr = this.DEFAULT_RULES.concat('same:password');
rules[name] = rulesArr.join('|');
validate(data, rules, messages)
.then(feedback => console.log(feedback))
.catch(errors => console.log('foo', errors));
this.setState({
[name]: value
});
}
}
我可能没有完整的背景,但我希望你了解这里发生的事情