Есть ли эквивалент для свойств keyboardType с redux-form?

Я начинаю с реакции на родную и сокращенную форму.

Я хотел бы изменить keyboardType при заполнении полей reduxform, однако свойства keyboardType не работают:

  <Field
      name = "email"
      component = {textAccount}
      fieldName = "Email"
      keyboardType = "email-address"
  />

Вот код textAccount:

import React from 'react';
import { View } from 'react-native';
import { Input } from 'react-native-elements';

function textAccount(props) {
  const { input, fieldName } = props;
  return (
    <View>
      <Input
        onChangeText = {input.onChange}
        value = {input.value}
        placeholder = {fieldName}
      />
    </View>
  );
}

export default textAccount;

Я предполагаю, что это относится к собственному элементу TextInput реакции, согласно документации.

В этом случае я хотел бы иметь возможность отображать наиболее точный тип клавиатуры в зависимости от поля, которое мне нужно («адрес электронной почты» в моем примере).

Вы знаете, есть ли какие-либо эквивалентные свойства для использования с "Field"?

Большое спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
832
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

попробуйте с type

 type = "email"

Обновлять :

Поменять нужно в Input вместо Field

<Input
     keyboardType = "email-address"
    ... />

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

Flora 27.03.2018 14:14

Готово, только что добавил в исходный пост

Flora 27.03.2018 15:42

Просто попробовал и выглядит отлично! Проблема в том, что у меня есть несколько разных Field (электронная почта, пароль, имя пользователя и т. д.), Использующих один и тот же компонент textAccount. У вас есть какой-нибудь совет, как бы вы их разделить, чтобы я действительно мог использовать реквизит keyboardType в соответствии с моими потребностями?

Flora 28.03.2018 11:22

точно так же, как вы делаете с input, fieldName, передавая его в props

Ravi 28.03.2018 11:38
Ответ принят как подходящий

Вы должны просто поместить его в компонент Input:

  <Input
    onChangeText = {input.onChange}
    value = {input.value}
    placeholder = {fieldName}
    keyboardType = "email-address"
  />

Кроме того, глядя на код redux-form, кажется, что все неизвестные параметры передаются в component:

function textAccount(props) {
  const { input, fieldName, ...rest } = props;
  return (
    <View>
      <Input
        onChangeText = {input.onChange}
        value = {input.value}
        placeholder = {fieldName}
        {...rest}
      />
    </View>
  );
}

и тогда вы сможете просто установить keyboardType на свой Field.

Спасибо за ответ, однако я не понимаю, как я могу просто установить keyboardType прямо в моем поле, поскольку обычно он не работает?

Flora 28.03.2018 11:17

@Flora Как я уже сказал, вам нужно имеют, чтобы установить его на Input. Однако Field передает все, что ему неизвестно, в component, то есть в textAccount. Вы уже используете это для передачи fieldName. Вы можете использовать тот же процесс для передачи keyboardType от Field к textAccount. Вам нужно только правильно записать textAccount и передать все неизвестные свойства Input, как я продемонстрировал с помощью синтаксиса ...rest.

Sulthan 28.03.2018 11:34

Отлично, спасибо за разъяснения, теперь все работает!

Flora 28.03.2018 11:39

Сделать это можно так:

const renderField = ({ label, requiredMarker, keyboardType, placeholder, input: { onChange, ...restInput }}) => {
    return (
    <View>
        <Text style = {{fontSize: 16, fontWeight: '600'}}>{label}<Text style = {{color: '#dc3545'}}>{requiredMarker}</Text></Text>
        <TextInput style = {{ padding: 5 }} keyboardType = {keyboardType} onChangeText = {onChange} {...restInput} placeholder = {placeholder} autoCapitalize='none'>
        </TextInput>
    </View>);
};

const UserComponent = props => {
    return (
        <View style = {{ flex: 1, flexDirection: 'column', margin: 20, justifyContent: 'flex-start', }}>
            <Field name = "email" keyboardType = "email-address" label = "Email: " requiredMarker = "*" placeholder = "Enter email"
                component = {renderField}
            />
        </View>
    );
}

Надеюсь, это поможет !!

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