我正在使用 Redux+Firestore 来获取数据并填充我的商店。我正在使用.onSnapshot
收听给定集合中的数据。我无法做的是在完成后分离侦听器。
我已阅读 Firestore 文档并了解为了分离侦听器,您需要将回调 ( .onSnapshot
)存储为变量,然后调用该变量进行分离。
我面临的问题是我正在使用 Redux(并componentDidMount/componentWillUnmount
分别附加/分离)。
我见过使用的模式在这里看到,其中回调存储在本地数据变量(虽然在Vue公司),所以我试图调度回调本身的Redux的商店,但它不接受它。
代码如下:
注意:我已经尝试根据上面共享的链接将真/假布尔值作为参数添加getRoomActivity
到调用中unlisten()
,此时 - 我不知所措。
// group.js (redux action file)
export const getRoomActivity = (roomId) => (dispatch) => {
const unlisten = roomCollection
.where('room', '==', roomId)
.onSnapshot((querySnapshot) => {
const roomItems = [];
querySnapshot.forEach((doc) => {
roomItems.push(doc.data());
});
dispatch({ type: GET_ROOM_ACTIVITY, payload: roomItems });
});
};
//Room.js (component)
componentDidMount() {
this.props.getRoomActivity(this.props.roomId);
}
componentWillUnmount() {
this.props.getRoomActivity(this.props.roomId);
}