Я использую redux-form в Ignite 2.0. Я пытаюсь проверить значения, но всякий раз, когда я пытаюсь найти длину строки, это дает мне Строка не определена
Вот мой компонент
import React, { Component } from "react";
import { Field, reduxForm } from "redux-form";
import {
Container,
Content,
Text,
Button,
View,
Item,
Input
} from "native-base";
import { StackNavigator } from "react-navigation";
const validate = value => {
const error = {};
error.name = "";
error.password = "";
const { name, password } = value;
if (name === "undefined" || name === "") {
error.name = "Empty";
}
if (password === "undefined" || password.length < 8) {
error.password = "too short";
}
console.info("error", error);
};
class SignupForm extends Component {
renderInput({
input,
label,
placeholder,
type,
meta: { touched, error, warning }
}) {
var hasError = false;
if (error !== undefined) {
hasError = true;
}
return (
<Item error = {hasError}>
<Input {...input} placeholder = {placeholder} type = {type} />
{hasError ? <Text>{error}</Text> : <Text />}
</Item>
);
}
render() {
const { handleSubmit } = this.props;
return (
<Container>
<Content>
<Field
name = "name"
component = {this.renderInput}
label = "Name"
placeholder = "Name"
type = "text"
/>
<Field
name = "password"
component = {this.renderInput}
placeholder = "Password"
label = "Password"
type = "password"
/>
<Button type = "submit" onPress = {handleSubmit}>
<Text>Submit</Text>
</Button>
</Content>
</Container>
);
}
}
export default reduxForm({
form: "SignupForm",
validate
})(SignupForm);
длина пароля продолжает выдавать ошибку TypeError: пароль не определен Может ли кто-нибудь сказать мне, что я делаю не так или что-то упустил.
Спасибо
if (password === "undefined" || password.length < 8) {
error.password = "too short";
}
Здесь замените "undefined"
без двойных кавычек на undefined
, поскольку undefined
является примитивным значением.
Таким образом проверьте undefined
.
if (!password && password.length < 8)
if (password === "undefined" || password.length < 8) {
error.password = "too short";
}
Здесь вы должны держать общую проверку, просто проверьте !password || password.length < 8
Таким же образом вы будете обращаться с корпусами null
и undefined
.
попробуйте
if (!password && password.length < 8)