更新数组索引上的数据javascript和react native

更新数组索引上的数据javascript和react native,javascript,reactjs,react-native,Javascript,Reactjs,React Native,在我的Todo应用程序中,我成功地实现了添加和删除功能,但更新功能遇到了问题。我需要它做的是,当我单击Todo的可触摸不透明度时,它应该显示在我的输入框中,如果进行了任何更改,则Todo应该更新,例如单击abcd必须使其显示在输入框中,并且对其所做的更改应该更新。下面还添加了图片 改变 在这里,我将您在TextInput中输入的文本分配给数据对象,这将更新数组 希望这有帮助 从哪里更新你的值,从哪里得到事件e,只能在文本输入上完成。你的函数永远不会在这里被调用,因为你需要在其中传递两个参数。这

在我的Todo应用程序中,我成功地实现了添加和删除功能,但更新功能遇到了问题。我需要它做的是,当我单击Todo的可触摸不透明度时,它应该显示在我的输入框中,如果进行了任何更改,则Todo应该更新,例如单击abcd必须使其显示在输入框中,并且对其所做的更改应该更新。下面还添加了图片

改变

在这里,我将您在TextInput中输入的文本分配给数据对象,这将更新数组


希望这有帮助

从哪里更新你的值,从哪里得到事件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('');
  }