You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用TextInput更新已创建文本?点击更新按钮界面不生效怎么办

问题根源

你当前的代码存在3个核心问题导致更新不生效:

  • 长按唤起编辑弹窗时,只保存了待修改的任务标题,没有保存对应任务的ID,后续找不到要修改的目标条目
  • updateTodo 现有逻辑是新增一条待办,不是修改原有待办,所以原条目不会变化,反而会多出来一条重复ID的新条目
  • 点击更新按钮调用updateTodo时传入的参数无意义,函数本身没有设计接收参数的逻辑

修正方案

  1. 首先修改长按事件,保存待修改任务的ID:
    找到待办项文本外层TouchableOpacity的onLongPress逻辑,修改为:
onLongPress={() => {
  setUpdateModal(true);
  setUpdateTaskTitle(item.name);
  setUpdateTaskId(item.key); // 新增这行,保存待修改任务的ID
}}
  1. 重写updateTodo函数,实现修改指定条目的逻辑:
const updateTodo = () => {
  // 遍历待办数组,匹配到对应ID的条目时更新名称,其他条目保持原有属性不变
  const updatedTodos = todos.map(todo => {
    if (todo.key === updateTaskId) {
      return {
        ...todo,
        name: updateTaskTitle
      }
    }
    return todo
  })
  setTodos(updatedTodos);
};
  1. 修正更新按钮的点击逻辑,删掉无意义的传参:
    找到弹窗内更新按钮的onPress逻辑,修改为:
onPress={() => {
  setUpdateModal(false);
  updateTodo(); // 删掉多余参数,函数可直接从state获取需要的ID和新标题
  setUpdateTaskTitle('');
  setUpdateTaskId(''); // 新增这行,清空保存的待修改ID,避免影响后续编辑
  console.log(updateTaskTitle);
}}

内容的提问来源于stack exchange,提问作者Lmao12233

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 13:06:04