Заменить текстовый компонент компонентом ввода текста — React Native

#reactjs #react-native #ecmascript-6

#reactjs #react-native #ecmascript-6

Вопрос:

Я хочу отобразить заполнение в компоненте типа пробелов в приложении.

Например: Привет, меня зовут _______. Еще немного заполнить _______ пробелы.

У меня есть ответ примерно такого: {text: Hi, my name is insert_input. Some more fill in insert_input blanks.}

 <Text>{item.text}<TextInput/></Text>
  

Я немного запутался, как мы можем этого добиться.

Ответ №1:

Этого должно быть достаточно. Вот рабочий код

разделите предложение на основе строки и добавьте их друг к другу, сохраняя ввод текста между ними. Не добавляйте его для последнего элемента.

 import * as React from 'react';
import { Text, View, StyleSheet, TextInput } from 'react-native';
import Constants from 'expo-constants';

// You can import from local files
import AssetExample from './components/AssetExample';

// or any pure javascript modules available in npm
import { Card } from 'react-native-paper';

export default function App() {

  const string =
    "Hi, my name is insert_input. Some more fill in insert_input blanks.";
  const splitString = string.split("insert_input");

  const modifiedString = () => {
    var newStr = "";
    splitString.map((subStr, i) => {
      newStr =  <Text>
                  <Text>{newStr}</Text> 
                  <Text>{subStr}</Text> 
                  {splitString.length - 1 === i ? null : <TextInput placeholder="________________________"/>}
                </Text>;
    });
    console.log(newStr);
    return newStr;
  };

  
  return (
    <View style={styles.container}>
      <Text style={styles.paragraph}>
       {modifiedString()}
      </Text>

    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingTop: Constants.statusBarHeight,
    backgroundColor: '#ecf0f1',
    padding: 8,
  },
  paragraph: {
    margin: 24,
    fontSize: 18,
    fontWeight: 'bold',
    textAlign: 'center',
  },
});
  

Комментарии:

1. TextInput не отображается с текстом, я думаю, мы не можем отобразить компонент TextInput внутри текстового компонента. Я думаю, нам нужно попробовать что-то еще.

2. можете ли вы объяснить немного больше? Хотя приведенная выше закуска работает нормально.

3. Ваше решение отлично работало на приведенном выше snack, но когда мы переходим с web на Android в snack — TextInput не отображался на устройстве. Я понял, почему он не работал, поскольку мы не установили ширину и высоту для TextInput.

4. Действительно ценю ваши усилия @Glitch_Znab