Всякий раз, когда я пытаюсь ввести TextInput, я продолжаю получать это предупреждение: неверный тип реквизита неверный реквизит "значение" типа "объект", переданный в "текстовый ввод", ожидаемая "строка"
ЛогинФорма.js
import React, { Component } from 'react';
import { Card, CardSection, Button, Input } from './common';
class LoginForm extends Component {
state = { email: '', password: '', error: '' };
render() {
return (
<Card>
<CardSection>
<Input
label='Email'
placeholder='[email protected]'
value = {this.state.email}
onChangeText = {(email) => this.setState({ email: email } )}
/>
</CardSection>
Input.js
import React from 'react';
import { TextInput, View, Text } from 'react-native';
const Input = ({ label, value, onChangeText, placeholder, secureTextEntry }) => {
return (
<View style = {styles.containerStyle}>
<Text style = {styles.labelStyle}>{ label }</Text>
<TextInput
secureTextEntry = {secureTextEntry}
placeholder = {placeholder}
style = {styles.inputStyle}
value = {value}
onChange = {onChangeText}
autoCorrect = {false}
/>
</View>
);
};
Не могли бы вы помочь мне найти проблему?
Слушатель событий, который вам нужно связать, это onChangeText
onChangeText
ожидает строковый параметр... где onChange
ожидает объект следующей формы: nativeEvent: { eventCount, target, text}
... вот почему вы получаете эту ошибку...
<Text style = {styles.labelStyle}>{ label }</Text>
<TextInput
secureTextEntry = {secureTextEntry}
placeholder = {placeholder}
style = {styles.inputStyle}
value = {value}
onChangeText = {onChangeText} // <--Look at this
autoCorrect = {false}
/>
они очень похожи... и немного сбивают с толку :)
Да, я знаю ... Спасибо за помощь :)
onChange = {(e) => onChangeText(e.text)}
или
onChangeText = {onChangeText}
Большое спасибо ! Это опечатка и я не заметил
Упомянутая вами ошибка или Warning: Failed prop type: Invalid prop value of type number supplied to TextInput, expected string
появляется, когда вы пытаетесь ввести значение типа number
вместо string
.
Чтобы избежать ошибки и следовать наилучшей практике для react-native, нужно обернуть входное значение функцией String()
следующим образом:
<TextInput
value = {String(this.props.value)}
onChange = {this.props.onChange}
placeholder = {"جستجو"}
blurOnSubmit = {false}
style = {{flex:0.9}}
returnKeyType = "done"
/>
ой как стыдно!! Большое спасибо !!