首页 > 解决方案 > 如何调用对象的辅助函数?

问题描述

我有一个对象,其中有帮助函数,可以根据时间安排通知。在用户按下按钮安排通知后,我在 redux 操作中调用该函数。

我收到错误“未定义不是对象(评估_'ScheduleNotification.default.startReminder')”

我尝试在按钮按下以及在操作中调用它,但两次都收到相同的错误。

我的日程通知对象-

export const scheduleNotification = {
  startReminder: {
    async function(item) {
      const permission = await registerForPushNotificationsAsync();
      if (permission) {
        Notifications.scheduleLocalNotificationAsync(
          {
            title: 'Reminder:',
            body: `${item.text} now`
          },
          {
            time: item.date
          }
        );
      } else {
        console.log('cannot send notification without permission.');
      }
    }
  },
}

然后是我调用函数的动作-

export const startReminder = (item) => {
  return (dispatch) => {
    dispatch({
      type: START_REMINDER,
      id: item.id
    });
    scheduleNotification.startReminder(item);
  };
};

我按下按钮的第二次没有安排通知,而是出现了错误消息。如果需要,我可以提供更多代码。谢谢您的帮助。

标签: javascriptreact-nativereduxexpo

解决方案


您已经创建了scheduleNotification.startReminder一个具有一个属性的对象 - 一个未命名的函数。您的代码中有太多花括号。你想要的可能是这样的:

export const scheduleNotification = {
  async startReminder(item) {
    const permission = await registerForPushNotificationsAsync();
    if (permission) {
      Notifications.scheduleLocalNotificationAsync({
        title: 'Reminder:',
        body: `${item.text} now`
      }, {
        time: item.date
      });
    } else {
      console.log('cannot send notification without permission.');
    }
  },
}

推荐阅读