这其实是一个组件设计上的问题,用于渲染的表格数据只需要有一份即可,通常作为根组件的 state 是没问题的。但你这里子组件又维护了一份 state,对于组件的渲染来说形成了一个双数据源,不仅容易造成你描述的这种问题,也无端增加了开发过程的心智负担。 正确的做法是 `子组件` 直接使用父组件传过来的 list 去渲染,不用再存一个 state,如果存在子组件需要更新父组件的 state 的情况,应该从父组件传一个用于更新的方法给子组件。 总之保证 `渲染数据的单一性` 以及 `更新数据方式的唯一性` 基本上就能避免这种问题的出现 比较简单的处理方式如下 // 父组件 const Father = () => { const [list, setList] = useState([]) const getListData = async () => { // 请求获取list数据 const res = await getList().catch(() => {}) setList(res.data) } return () } // 子组件 const Son = ({list, setList, getListData}) => { // 新增 const onAdd = async () => { await getListData() setList((prevList) => [{空行数据}, ...prevList]) } return ( 新增 ) }