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

React Native待办应用修改数组state后视图不更新,仅其它state变更后才渲染

问题根因

React 的 state 遵循不可变更新原则,你当前的代码直接对原始的 taskItems 数组执行 push、splice 操作,属于修改原数组本身,数组的内存引用地址没有发生变化。当你把同一个引用的数组传给 setTaskItems 时,React 会判定 state 未更新,因此不会触发视图重渲染。只有当你修改 task 这个 state 触发重渲染时,已经被你手动修改的原 taskItems 数组的最新值才会被顺带渲染出来。

修复方案

修改两个更新数组的方法,永远传入新的数组引用即可:

  1. 新增待办时用扩展运算符生成新数组
  2. 删除待办时用 filter 方法生成新数组

修改后的代码如下:

const [task, setTask] = useState('');
const [taskItems, setTaskItems] = useState(["Write a task"]);

const textChange = (text: string) => {
  setTask(text)
}

const handleAddTask = () => {
  // 生成新数组传入,不修改原数组
  setTaskItems([...taskItems, task])
  setTask('')
}

const rmTask = (index: number) => {
  // 过滤掉对应下标的项,生成新数组传入
  setTaskItems(taskItems.filter((_, i) => i !== index))
}

原组件渲染逻辑不需要做任何修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:06:03