3 回答

TA貢獻1900條經驗 獲得超5個贊
使用這個我希望它能解決你的問題。 如果您在遵循代碼方面需要任何幫助,請告訴我。
import React, {Component} from 'react';
import {View, TouchableOpacity, Text, TextInput} from 'react-native';
export class AddInputs extends Component {
state = {
textInput: [],
inputData: [],
};
//function to add TextInput dynamically
addTextInput = index => {
let textInput = this.state.textInput;
textInput.push(
<TextInput
style={{
height: 40,
width: '100%',
borderColor: '#2B90D8',
borderBottomWidth: 3,
}}
placeholder={'Add Text'}
onChangeText={text => this.addValues(text, index)}
/>,
);
this.setState({textInput});
};
//function to add text from TextInputs into single array
addValues = (text, index) => {
let dataArray = this.state.inputData;
let checkBool = false;
if (dataArray.length !== 0) {
dataArray.forEach(value => {
if (value.index === index) {
value.text = text;
checkBool = true;
}
});
}
if (checkBool) {
this.setState({
inputData: dataArray,
});
} else {
dataArray.push({text: text, index: index});
this.setState({
inputData: dataArray,
});
}
};
render() {
return (
<View
style={{
flex: 1,
}}>
<View
style={{
width: '100%',
alignItems: 'center',
}}>
{this.state.textInput.map(value => {
return value;
})}
</View>
<TouchableOpacity
onPress={() => {
this.addTextInput(
'your desired number of inputs here like 5, 20 etc',
);
}}>
<Text>Add Inputs</Text>
</TouchableOpacity>
</View>
);
}
}

TA貢獻1848條經驗 獲得超10個贊
你可以這樣做:
this.state = { values: [] };
const textInputs = [];
for(let i=0; i< this.state.noOfStores; i++) {
textInputs.push(
<TextInput
style ={[styles.input,{ backgroundColor: theme.colors.lightGray }]}
placeholder=" Name "
keyboardType={'default'}
placeholderTextColor="gray"
onChangeText={text => this.onChangeText(text,i)}
/>
)
this.setState({ values: [...this.state.values, ''] });
}
onChangeText = (text,index) => {
const values = [...this.state.values];
values[index] = text;
this.setState({ values });
}
然后在渲染方法中:
<View>
{textInputs}
</View>

TA貢獻1796條經驗 獲得超4個贊
你可以像下面這樣,根據你的選擇器設置一個給定長度的數組,并顯示基于它的 UI。
setRows 設置行數,您可以輕松更新數組。
從您的選擇器中調用 setRows。
export default function App() {
const [textArr, setTextArr] = useState([]);
const onChangeText = (text, index) => {
const arr = [...textArr];
arr[index] = text;
setTextArr(arr);
};
const setRows=(rowCount)=>{
setTextArr(Array(rowCount).fill('Default text'))
};
return (
<View style={{ paddingTop: 100 }}>
<Button
title="set"
onPress={()=>setRows(6)}
/>
{textArr.map((item, index) => (
<TextInput
style={[styles.input, { backgroundColor: 'grey' }]}
placeholder=" Name "
keyboardType={'default'}
placeholderTextColor="gray"
value={item}
onChangeText={(text)=>onChangeText(text,index)}
/>
))}
</View>
);
}
添加回答
舉報