有人可以帮忙实现从FlatList删除项目的方法。我正在尝试制作待办事项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有人可以帮忙实现从FlatList删除项目的方法。我正在尝试制作待办事项相关的知识,希望对你有一定的参考价值。

我不确定如何在FlatList中添加删除功能。我知道我可以制作不同的组件,但是我想知道如何在这个文件中执行此操作。我已经尝试了好几个小时,但不知道该怎么办。请有人帮忙。

export default function test() {
  const [enteredGoal, setEnteredGoal] = useState(""); 
  const [courseGoals, setCourseGoals] = useState([]); 


  const goalInput = enteredText => {
    setEnteredGoal(enteredText); 
  };

  const addGoal = () => {
    setCourseGoals(currentGoals => [
      ...currentGoals,
      { key: Math.random().toString(), value: enteredGoal }
    ]);

  };

  const removeGoal = goalId => {
    setCourseGoals(currentGoals => {
      return currentGoals.filter((goal) => goal.id !== goalId);
    })
  }

  return (
    <View style={styles.container}>
      <View>
        <TextInput
          color="lime"
          style={styles.placeholderStyle}
          placeholder="Type here"
          placeholderTextColor="lime"
          onChangeText={goalInput} 
          value={enteredGoal} 

        />
      </View>
      <FlatList
        data={courseGoals} 
        renderItem={itemData => (
          <View style={styles.listItem} >
            <Text style={{ color: "lime" }}>{itemData.item.value}</Text>
          </View>
        )}
      />
      <View>
        <TouchableOpacity>
          <Text style={styles.button} onPress={addGoal}>
            Add
          </Text>
        </TouchableOpacity>
      </View>
    </View>
  );
}
答案

您只需要稍微修改一下代码即可处理删除按钮。由于您已经具有删除功能,因此在单击删除按钮时调用该功能。就这样。

<FlatList
  data={courseGoals}
  renderItem={itemData => (
    <View style={{ flexDirection: "row", justifyContent: "space-between" }}>
      <Text style={{ color: "lime" }}>{itemData.item.value}</Text>
      <TouchableOpacity onPress={() => removeGoal(itemData.item.key)}>
        <Text>Delete</Text>
      </TouchableOpacity>
    </View>
  )}
/>;

编辑如下更改removeGoal功能

const removeGoal = goalId => {
  setCourseGoals(courseGoals => {
    return courseGoals.filter(goal => goal.key !== goalId);
  });
};

希望这对您有所帮助。随时提出疑问。

以上是关于有人可以帮忙实现从FlatList删除项目的方法。我正在尝试制作待办事项的主要内容,如果未能解决你的问题,请参考以下文章

使用递归实现 Stack 的 Pop 方法

有没有一种方法可以使用 Detox E2E 测试在 FlatList 中找到一个元素

滑动另一个元素时第一个索引隐藏项目未隐藏 - 滑动器 FlatList React native

React Native - 如何从父级获取 FlatList 项的值

[RN] React Native 使用 FlatList 实现九宫格布局

React Native - 单击 Flatlist 的项目(搜索列表后)