我正在尝试更新数据库中的通知计数。
我是通过创建一个集合来做到这一点的,当我想添加到通知计数中时,会向其中添加一个UID,而当我想从通知计数中减去时,会从该集合中删除一个UID。
然后我计算集合的大小并更新通知计数。
updateNotificationCount函数由低阶组件触发。
但是,我只能在isNewMatch为true时才能更新数据库。当isNewMatch为false时,为什么不更新数据库?
state = {notificationSet: new Set()}
updateNotificationCount = (uid, isNewMatch) => {
if (isNewMatch) {
this.setState(({ notificationSet }) => ({
notificationSet: new Set(notificationSet).add(uid)
}));
}
else {
this.setState(({ notificationSet }) => {
const newNotificationSet = new Set(notificationSet);
newNotificationSet.delete(uid);
return {
notificationSet: newNotificationSet
};
});
};
}
答案 0 :(得分:1)
您不需要每次都执行new Set()
,因为您已经用new Set()
初始化了状态,所以现在您只需执行以下操作即可:
state = {notificationSet: new Set()}
updateNotificationCount = (uid, isNewMatch) => {
let notificationSet;
if (isNewMatch) {
notificationSet=this.state.notificationSet;
notificationSet.add(uid);
this.setState({
notificationSet: notificationSet
});
} else {
notificationSet=this.state.notificationSet;
notificationSet.delete(uid);
this.setState({
notificationSet : notificationSet
});
};
}