【发布时间】:2021-11-01 14:33:05
【问题描述】:
我们正在将 RTK 查询集成到我们的应用中。
我们目前的“架构”如下:
所有业务逻辑操作都写在纯 JS 类的服务中。
这些服务是使用反应上下文传递的,以便组件树能够调用服务函数。
到目前为止,这些服务正在直接访问 redux 存储以执行适当的逻辑。
现在我们正在迁移到 RTK,从服务访问 RTK 缓存就不那么简单了:
据我所知,访问它的唯一方法是通过相关端点的select 函数。
关键是这个方法是一个“选择器工厂”,在反应组件之外使用它似乎不是正确的方法。
这是一个例子:
class TodoService {
getTodoTitle( todoId: string ) {
// This doesn't looks the right way to do it
const todoSelector = api.endpoints.getTodo.select( {id: todoId } );
const todo = todoSelector( state )
return todo.data.title
}
}
有什么方法可以安全的实现下面的代码
class TodoService {
getTodoTitle( todoId: string ) {
// Is there any way to do that kind of call ?
const todoEntry = api.endpoints.getTodo.getCacheEntry( {id: todoId } );
return todoEntry.data.title
}
}
我想答案是否定的,我必须重构我们的整个架构,但在这样做之前,我想确定没有替代方法。
请注意,我可以自己构建缓存条目密钥,但这听起来也不是一种可靠的方法...
【问题讨论】:
标签: reactjs react-redux rtk-query rtk