#javascript #html #css #react-native
#javascript #HTML #css #реагировать-родной
Вопрос:
Я пытаюсь вызвать свой emailInput и отобразить его на моей странице createPassword, в частности, где youremail@email.com есть. Я привел две страницы ниже: страницу электронной почты, состоящую из пользовательского ввода, и страницу пароля, на которой я хочу, чтобы этот пользовательский ввод отображался. Я не могу по-настоящему разобраться в том, как ссылаться на входные данные в моем onPress. Любое понимание вообще ценится больше, чем вы думаете!
Кроме того, могу ли я вот так позвонить двум onpress’ам? Или мне нужно создать две функции и сделать это таким образом?
SignUpEmail.js
export default class SignUpEmailPage extends Component {
constructor() {
super();
this.state = {
color1: '#A2A2A2'};}
render() {
return (
<View style={styles.containerMain}>
{/* Email Input */}
<Container style = {styles.emailInput}>
<Form>
<Item floatingLabel >
<Label style={{color:this.state.color1}}>Email Address</Label>
<Input
style={styles.textInput}
autoCorrect={false}
autoCapitalize="none"
onFocus={() => this.setState({color1: '#F7018D'})}
onBlur={() => this.setState({color1: '#A2A2A2'})}
/>
</Item>
</Form>
</Container>
<View style={styles.containerBottom}>
<ContinueButton
onPress = {() => navigation.navigate('CreatePassword', { emailInput: })}
onPress={() => this.props.navigation.navigate('CreatePassword')}
/>
</View>
CreatePassword.js
export default class CreatePasswordPage extends Component {
constructor() {
super();
this.state = {
color1: '#A2A2A2'};}
render() {
return (
<View style={styles.containerMain}>
{/* Password Input */}
<Container style = {styles.passwordInput}>
<Form>
<Item floatingLabel>
<Label style={{color:this.state.color1}}>Password</Label>
<Input
style={styles.textInput}
autoCorrect={false}
autoCapitalize="none"
secureTextEntry={true}
onFocus={() => this.setState({color1: '#F7018D'})}
onBlur={() => this.setState({color1: '#A2A2A2'})}
/>
</Item>
</Form>
</Container>
<View style={styles.containerHeader}>
<Text style={styles.title}>Create a Password</Text>
</View>
<View style={styles.containerCaption}>
<Text style={styles.caption}> Lets create your Password for
</Text>
</View>
<View style={styles.containerCaption2}>
<Text style={styles.caption}> youremail@email.com</Text>
</View>
<View style= {styles.backArrowPlacement}>
<BackArrow
onPress={() => this.props.navigation.navigate('SignUpEmail')}
/>
</View>
<View style={styles.containerBottom}>
<ContinueButton
onPress={() => this.props.navigation.navigate('PhoneVerification')}
/>
</View>
</View>
);
}
}
Ответ №1:
Вы не можете использовать navigation.navigate
, поскольку для этого требуется реализация Hooks в функциональном компоненте. Вы можете сделать это
export default class SignUpEmailPage extends Component {
constructor() {
super();
this.state = {
color1: '#A2A2A2',
inputValue: '', // add state here
};
}
updateInputValue = (evt) => {
this.setState({
inputValue: evt.target.value
});
}
render() {
return (
<Input
value = {this.state.inputValue}
onChange={this.updateInputValue }
/>
<ContinueButton
//onPress = {() => navigation.navigate('CreatePassword', { emailInput: })} // remove this
onPress={() => this.props.navigation.navigate('CreatePassword',{ emailInput: this.state.inputValue })} // use this like
/>
)
}
}
Комментарии:
1. Хорошо, круто, спасибо. Еще одна проблема, с которой я столкнулся, заключается в том, как вызвать ввод, что бы я поставил после emailInput:
2. После
emailInput
того, как вам нужно добавить значение, подобноеemailInput: inputValue
тому, которое вы получаете из контейнера ввода3. Я понимаю, что вам нужно добавить туда входное значение, но что бы это было в моем случае? Я не могу понять это, inputValue выдает мне ошибку, поэтому я предполагаю, что это неверно
4. Я пометил это как правильное! Спасибо вам за ваше время, это очень важно для меня! Если у вас есть время и вы не возражаете объяснить, как работает evt.target.value? Также, если бы вы могли объяснить, как напечатать входное значение, я попробовал <Text}>{this.setState.inputValue}</Text> вместе с некоторыми другими, но это мой лучший выбор.
5. Рад, что это работает для вас 🙂 Вы получаете доступ к значению поля, используя
event.target.value
синтаксис, и для получения более подробной информации вы можете прочитать здесь w3schools.com/react/react_forms.asp