为什么要添加而不删除集合中的元素

时间:2019-06-17 03:50:44

标签: react-native

我正在尝试更新数据库中的通知计数。

我是通过创建一个集合来做到这一点的,当我想添加到通知计数中时,会向其中添加一个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
          };
        });
      };

}

1 个答案:

答案 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
    });
  };

}