gpt4 book ai didi

javascript - mobx/mobx-state-tree 中的可重用操作

转载 作者:行者123 更新时间:2023-12-04 14:18:58 27 4
gpt4 key购买 nike

我有多个 mobx 商店,发现自己在每个商店中都有几乎相同的操作。因此,我希望能够在商店之间推广和重用它们。下面我尝试分解创建操作,希望能够将其导入多个商店,但它不起作用,因为 self 不可用。

我想从这里开始:

export const CategoriesStore = types
.model("CategoriesStore", {
})
.views(self => ({
}))
.actions(self => {
const collection = "categories"

const create = flow(function* create(newItem) {
const newItemRef = firestore.collection(collection).doc()
const id = newItemRef.id
self[collection].set(id, newItem)
yield newItemRef.set(newItem)
return id
})
return {
create
}
})

像这样,创建操作可以在其他商店中重用:

const create = flow(function* create(newItem, collection) {
const newItemRef = firestore.collection(collection).doc()
const id = newItemRef.id

this[collection].set(id, newItem)
yield newItemRef.set(newItem)

return id
})

export const CategoriesStore = types
.model("CategoriesStore", {
})
.views(self => ({
}))
.actions(self => {
const collection = "categories"

const _create = create.bind(self)

return {
_create
}
})

关于如何实现这一点有什么想法吗?

最佳答案

虽然我从来没有做过那样的事情,但我一直在考虑并且觉得它应该有效。但如果没有,您可以执行以下操作:

const create = (self) => flow(function* create(newItem, collection) {
const newItemRef = firestore.collection(collection).doc()
const id = newItemRef.id

self[collection].set(id, newItem)
yield newItemRef.set(newItem)

return id
})

export const CategoriesStore = types
.model("CategoriesStore", {
})
.views(self => ({
}))
.actions(self => {
const collection = "categories"

return {
create: create(self)
}
})

这绝对有效。

关于javascript - mobx/mobx-state-tree 中的可重用操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57074964/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com