【发布时间】:2021-04-08 07:22:17
【问题描述】:
目前我尝试将 firebase / firestore 连接到我的 react-native 项目的 redux 存储。
我用@reduxjs/toolkit 的createSlice 函数创建了一个reducer
const authSlide = createSlice({
name: 'auth',
initialState: initialState,
reducers: {
authLoading: state => {
state.isLoading = true;
},
hasError: (state, action: PayloadAction<Error>) => {
state = { ...state, error: action.payload, isLoading: false };
},
},
extraReducers: builder => {
builder.addCase(setUserData.pending, (state, action) => {});
builder.addCase(setUserData.fulfilled, (state, action) => {});
builder.addCase(setUserData.rejected, (state, action) => {});
}
})
在 setUserData reducer 的操作中,我想订阅 firestore 中的更改,因此每次发生更改时都应更新状态。
我用这段代码试过了,它只工作过一次,但不是为了以后的更新
export const getUserDataById = createAsyncThunk(
'auth/getUserData',
async (uid: string, { rejectWithValue }) =>
new Promise<User>((resolve, reject) => {
const unsubscribe = userRef.doc(uid).onSnapshot(
snapshot => {
const data = snapshot.data();
if (snapshot.exists && data) {
resolve({ uid, ...data });
} else {
reject({ name: 'Auth error', message: i18n.t('error.userNotFound') });
}
},
error => reject(error),
);
listenerUnsubscribeList.push(unsubscribe);
}),
);
有人知道我该如何解决这个问题吗?
【问题讨论】:
-
Firebase 不是我的专业领域,但您可能想查看 react-redux-firebase 包。
-
感谢您的提示,我已经看过了,但我认为该软件包不适用于当前版本的 react-native-firebase
标签: firebase react-native redux react-redux redux-toolkit