Строка не определена при попытке найти ее длину - PullRequest
0 голосов
/ 29 октября 2018

Я использую редукс-форму в 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.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 продолжает выдавать ошибку TypeError: пароль не определен Может кто-нибудь сказать мне, что я делаю неправильно или я что-то пропустил.

Спасибо

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Отметьте undefined таким образом.

if (!password && password.length < 8)
0 голосов
/ 29 октября 2018

if (password === "undefined" || password.length < 8) { error.password = "too short"; }

Здесь вы должны оставить общий чек, просто проверьте !password || password.length < 8 Таким образом, вы также обрабатываете дело null и undefined.

0 голосов
/ 29 октября 2018
if (password === "undefined" || password.length < 8) {
    error.password = "too short";
  }

Здесь замените "undefined" без двойных кавычек, undefined, поскольку undefined является примитивным значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...