React Native: setState (& hellip;): принимает объект переменных состояния для обновления или функцию, которая возвращает объект переменных состояния

Я получаю эту ошибку при добавлении проверки формы на мой компонент формы регистрации в React Native.

import React, { Component } from 'react';
import { View, AsyncStorage } from 'react-native';
import { Form, Item, Input, Label, Button, Text } from 'native-base';
import axios from 'axios';
import { JWT } from 'App';

class RegistrationForm extends Component {
	constructor(props) {
		super(props);
		this.state = {
			name: '',
			email: '',
			emailValidate: '',
			pin: '',
			pinValidate: '',
			role: 'Consumer',
			pin_confirmation: ''
		};
	}

	onSubmit = () => {
		const { name, email, pin, role, pin_confirmation } = this.state;
		axios
			.post('http://0.0.0.0:4000/api/v1/sign_up', {
				user: {
					name,
					email,
					pin,
					role,
					pin_confirmation
				}
			})
			.then(response => {
				AsyncStorage.setItem('JWT', response.data.jwt);
				console.log(response.data.jwt);
				this.props.navigation.navigate('Profile');
			})
			.catch(error => {
				console.log(error);
			});
	};

	validate(text, type) {
		alph = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g;
		if (type == 'email') {
			if (alph.test(text)) {
				this.setState((emailValidate = true));
			} else {
				this.setState((emailValidate = false));
			}
		}
		return type;
	}

	acceptTextInput = () => {
		if (emailValidate == true) {
			this.setState({ email: type });
		}
	};

	// this.setState({someField:someValue})

	render() {
		return (
			<View>
				<Form>
					<Item floatingLabel>
						<Label>Name</Label>
						<Input
							value={this.state.name}
							onChangeText={name => {
								this.setState({ name });
							}}
						/>
					</Item>
					<Item floatingLabel last>
						<Label>Email</Label>
						<Input
							autoCapitalize="none"
							value={this.acceptTextInput}
							onChangeText={text => this.validate(text, 'email')}
						/>
					</Item>
					<Item floatingLabel last>
						<Label>Pin</Label>
						<Input
							keyboardType={'number-pad'}
							secureTextEntry
							value={this.state.pin}
							onChangeText={pin => {
								this.setState({ pin });
							}}
						/>
					</Item>
					<Item floatingLabel last>
						<Label>Pin Confirmation</Label>
						<Input
							keyboardType={'number-pad'}
							secureTextEntry
							value={this.state.pin_confirmation}
							onChangeText={pin_confirmation => {
								this.setState({ pin_confirmation });
							}}
						/>
					</Item>
				</Form>
				<Button onPress={this.onSubmit}>
					<Text> Submit</Text>
				</Button>
			</View>
		);
	}
}

export default RegistrationForm;

Это мой компонент формы регистрации. Я вызываю функцию проверки на onChangeText на входе электронной почты. Функция validate проверяет, передает ли вход в форму электронной почты выражение регулярного выражения. Если да, то для ключа «emailValidate» в состоянии установлено значение true. Затем я передаю другую функцию, называемую acceptTextInput, на значение ввода электронной почты. AcceptTextInput оценивает, равен ли emailValidate значение true, и если это так, он вводит пользовательский ввод в состояние электронной почты. По какой-то причине я получаю эту ошибку & amp; Я действительно не знаю, почему.

Надеюсь, я объясню это так ясно, как могу.

0
задан 13 August 2018 в 14:54

0 ответов

Другие вопросы по тегам:

Похожие вопросы: