尝试查找字符串的长度时未定义字符串



我在Ignite 2.0中使用redux形式。我正在尝试验证这些值,但每当我试图找到字符串的长度时,它就会给我字符串未定义

这是我的组件

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.log("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);

password.length不断抛出错误类型错误:密码未定义有人能告诉我我做错了什么,或者我是否遗漏了什么吗。

谢谢

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通过这种方式,您也可以处理nullundefined的情况。

相关内容

最新更新