【发布时间】:2018-08-13 17:27:41
【问题描述】:
我正在注册表中建立一个 pin 验证,以检查第一个 pin 是否与第二个匹配。我创建了一个 validatePinConfirmation 函数来检查 pin 是否等于 pin_confirmation。如果是,那么我们将 pin_confirmation 的状态设置为用户插入的值。由于某种原因,函数或表单没有传递值并将其保存到数据库中。如果有人能准确指出我做错了什么,我将不胜感激。
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: ''
};
}
validateEmail(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 });
}
}
if ({ emailValidate: true }) {
this.setState({ email: text });
}
}
validatePinConfirmation(text) {
const { pin, pin_confirmation } = this.state;
if (text == pin) {
this.setState({ pinValidate: true });
} else {
this.setState({ pinValidate: false });
}
if ({ pinValidate: true }) {
this.setState({ 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);
});
};
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.state.email}
onChangeText={text => this.validateEmail(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={text => this.validatePinConfirmation(text)}
/>
</Item>
</Form>
<Button onPress={this.onSubmit}>
<Text> Submit</Text>
</Button>
</View>
);
}
}
export default RegistrationForm;
【问题讨论】:
标签: javascript reactjs forms validation react-native