Я пытаюсь создать проверку формы с помощью react-bootstrap
и хотел бы избежать создания функции проверки для каждого ввода.Использование переменной как части вызова this.state ReactJS
У меня есть этот вход:
<Input
hasFeedback
type="text"
label="Username"
bsStyle={this.state.UsernameStyle}
onChange={this.handleChange.bind(this, 'Username')}
value={this.state.Username}
bsSize="large"
ref="inptUser"
placeholder="Enter Username"
/>
Плюс, у меня есть две функции для обработки проверки и обновления состояния:
handleChange: function(name, e) {
var state = {};
state[name] = e.target.value;
this.setState(state);
var namestyle = name + 'Style';
this.setState(this.validationState(namestyle, e));
},
&
validationState: function(style, event) {
var length = event.target.value.length;
if (length > 4) this.setState({style: 'success'});
else if (length > 2) this.setState({style: 'warning'});
return {style};
}
На данный момент если я изменю style
до Username
Я могу получить этот solutio n для работы с этим конкретным входом. Я мог бы сделать оператор if, и в зависимости от строки, которую я получаю в style
, я могу вызвать соответствующее setState, но является ли это лучшим способом сделать это?
Спасибо!
Whoosh Я не думаю, что вы должны называть 'setState' в вашей' функции validationState' ... он должен сделать некоторые проверки и передать результат обратно на оригинал ' setState' в 'handleChange'. Вы уже создали 'setState'. – azium
Ха-ха, ты взломал меня с помощью 'setState'! Я думал о том, как это может вызвать какие-либо проблемы, но пока все работает нормально. Я посмотрю, смогу ли я найти лучшее решение для этого. – ekarni