更新数组索引上的数据javascript和react native
在我的Todo应用程序中,我成功地实现了添加和删除功能,但更新功能遇到了问题。我需要它做的是,当我单击Todo的可触摸不透明度时,它应该显示在我的输入框中,如果进行了任何更改,则Todo应该更新,例如单击abcd必须使其显示在输入框中,并且对其所做的更改应该更新。下面还添加了图片 改变 在这里,我将您在TextInput中输入的文本分配给数据对象,这将更新数组更新数组索引上的数据javascript和react native,javascript,reactjs,react-native,Javascript,Reactjs,React Native,在我的Todo应用程序中,我成功地实现了添加和删除功能,但更新功能遇到了问题。我需要它做的是,当我单击Todo的可触摸不透明度时,它应该显示在我的输入框中,如果进行了任何更改,则Todo应该更新,例如单击abcd必须使其显示在输入框中,并且对其所做的更改应该更新。下面还添加了图片 改变 在这里,我将您在TextInput中输入的文本分配给数据对象,这将更新数组 希望这有帮助 从哪里更新你的值,从哪里得到事件e,只能在文本输入上完成。你的函数永远不会在这里被调用,因为你需要在其中传递两个参数。这
希望这有帮助 从哪里更新你的值,从哪里得到事件e,只能在文本输入上完成。你的函数永远不会在这里被调用,因为你需要在其中传递两个参数。这里是我的零食链接,如果你能看一下的话。这是因为TouchableOpacity的奇怪行为,只需将这一行添加到你的滚动视图键盘shoulldPersisttaps={'handled'}检查这个
export default function Todo() {
const [getText, setText] = useState('');
const [getList, setList] = useState([]);
const addItem = () => {
setList([...getList, {key: Math.random().toString(), data: getText}]);
setText('');
}
const removeItem = (itemKey) => {
setList(() => getList.filter(item => item.key != itemKey));
}
const updateFieldChanged = (index) => e => {
let newArr = [...getList]; // copying the old datas array
newArr[index] = e.target.value; // replace e.target.value with whatever you want to change it to
setList(newArr);
}
return (
<View style={styles.container}>
<Text style={styles.title}>todo</Text>
<View style={styles.inputContainer}>
<TextInput
style={styles.textInput}
placeholder="Enter Item"
onChangeText={text => setText(text)}
value={getText}
/>
<CustomButton
text = 'add'
color='red'
title= 'add'
textSize={20}
textColor="white"
onPressEvent={addItem}
/>
</View>
<ScrollView style={styles.scrollview}>
{getList.map((item, id) =>
<TouchableOpacity
key={item.key}
activeOpacity={0.7}
onPress= {() => updateFieldChanged(id)}
>
<View style={styles.scrollviewItem}>
<Text style={styles.scrollviewText}>{id}) {item.data}</Text>
<TouchableOpacity
onPress={() => removeItem(item.key)}
>
<View style={styles.crosstextcontainer}>
<Text style={styles.crosstext}>X</Text>
</View>
</TouchableOpacity>
</View>
</TouchableOpacity>
)}
</ScrollView>
</View>
);
}
<TouchableOpacity
key={item.key}
activeOpacity={0.7}
onPress= {() => updateFieldChanged(id)}
>
<TouchableOpacity
key={item.key}
activeOpacity={0.7}
onPress= {() => updateFieldChanged(id,getText)}
>
const updateFieldChanged = (index, text) => {
let newArr = [...getList]; // copying the old datas array
newArr[index].data = text; // replace e.target.value with whatever you want to change it to
setList(newArr);
setText('');
}