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

Zustand存储空数组时调用setJobs报错:无法访问length属性

使用Zustand维护jobs列表时,空数组更新报错问题

我用Zustand维护一个jobs列表存储,当用新选中内容更新该列表时,原jobs已有值时正常工作,但原列表为空数组时会报错:can't access property "length", prevDeps is undefined。

调用setJobs的代码

createUserJob({
    variables: {
        input: {
            user_id: id,
            job_id: filteredJobId || submitJobId
        }
    }
}).then((response): void => {
    console.log('response', response.data);
    const { createUserJob } = response.data;
    if (createUserJob) {
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        const newJob = createUserJob.map((job: any) => ({job_id:job.job_id}));
        console.log('newJob', newJob);

        //setNewJob(newJob);
        setJobs(newJob);
    }
    setWishListJob([]);
});

Zustand存储调用方式

const [jobs, setJobs] = userDataStore((state) => [state.jobs || [], state.setJobs]);

空数组时console.log显示内容:

Array []
​
length: 0
​
<prototype>: Array []

我尝试过以下方案,但仍出现该报错:

  • 在state.jobs后加|| []
  • 初始将jobs设为[{ job_id: 0}]
  • 使用useEffect设置存储
  • 判断jobs.length后再调用setJobs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:48:22