问题描述
是否可以将createAsyncThunk用于Firebase侦听器,例如firestore.collection.onSnapshot?
它可能不起作用,因为onSnapshot的工作方式(这是一个侦听器,它接收数据并在每次Firestore更新时触发回调,并且它返回取消订阅该侦听器的函数)。我尝试实现createAsyncThunk,但无法解决。
这是我当前有效的thunk实现:
const listenerUnsubscribeList = [];
export function fetchProjects() {
return dispatch => {
dispatch(fetchProjectsPending());
const unsubscribe = firestore
.collection('projects')
.onSnapshot(
snapshot => { dispatch(fetchProjectsFulfilled(snapshot.docs.map(doc => ({ id: doc.id,...doc.data() })))) },error => { dispatch(fetchProjectsError(error)) },);
listenerUnsubscribeList.push(unsubscribe);
}
}
这是我尝试的createAsyncThunk,不起作用。我收到database/fetchProjects/pending
和database/fetchProjects/fulfilled
,但有效载荷为undefined
const listenerUnsubscribeList = [];
export const fetchProjects = createAsyncThunk(
'database/fetchProjects',async (_,thunkAPI) => {
const unsubscribe = await firestore
.collection('projects')
.onSnapshot(
snapshot => { return snapshot.docs.map(doc => ({ id: doc.id,...doc.data() })) },error => { return error },);
listenerUnsubscribeList.push(unsubscribe);
}
);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)