Legend State v3.0.0-beta.31中syncedCrud的create函数未触发问题咨询
Legend State v3.0.0-beta.31中syncedCrud的create函数未触发问题咨询
大家好,我在使用Legend State v3.0.0-beta.31的syncedCrud功能时碰到了个棘手的问题,想请教下社区的各位大佬。
先给大家看下我目前的代码实现:
export const courses$ = observable<Record<number, Course>>( syncedCrud({ list: async () => { const result = await apiFetchCourses() if (!result.length) throw new Error('No courses found') return result // type of result: Course[] }, create: (course) => { console.log('create course', course) return apiCreateCourseForLegend(course) }, mode: 'set', persist: { name: 'globalCourseStore', plugin: observablePersistAsyncStorage({ AsyncStorage }) } }) )
根据官方文档的描述:
create函数会在有新对象被添加到observable时自动调用
但实际操作时,我试了好几种向courses$中添加新courseEntity的方式,create函数都完全没触发:
- 第一种直接通过ID设置:
courses$[courseEntity.id].set(courseEntity)
- 第二种用
set方法结合函数更新:
courses$.set((prev) => { return { ...prev, [courseEntity.id]: courseEntity } })
- 第三种用
assign方法批量添加:
courses$.assign({[courseEntity.id]: courseEntity})
我原本以为只要是向这个syncedCrud包装的observable里新增条目,就会自动触发create去调用后端接口,但现在不管哪种写法都没效果。有没有朋友遇到过类似的情况,或者能帮我指出是不是我对syncedCrud的工作逻辑理解错了呀?
内容来源于stack exchange
相关产品推荐
相关产品推荐

