当数据类型不同时,Javascript如何为本地存储改进可重用的辅助函数?

问题描述

我为我的react应用程序编写了一个localstorage助手,以使其可重用,但感觉不太可重用。如果我保存或删除一个项目,则取决于存储数据类型:如果要对它的数组进行遍历,如果它是对象或字符串,则不能这样做。所以现在我有了单独的功能(saveItemToArray,saveItemToObject等)。我还尝试编写一个通用函数,在该函数中检查数据类型并基于该函数执行不同的操作,但这似乎并不实用。有没有好的解决方案?非常感谢!

export const localStorageHelper = {
    load: (key) => {
        return JSON.parse(localStorage.getItem(key))
    },savetoArr: (item,storageID) => {
        let storage = localStorageHelper.load(storageID);
        if (!storage) storage = [];
        localStorage.setItem(storageID,JSON.stringify([...storage,item]))
    },saveItemToObject: (item,storageID) => {
        let storage = localStorageHelper.load(storageID);
        if (!storage) storage = {};
        localStorage.setItem(storageID,{...storage,item});
    },removeItemFromArray: (removedItem,storageID) => {
        let storage = localStorageHelper.load(storageID);
        let updatedStorage = storage.filter((item)=> item !==removedItem);
        localStorage.setItem(storageID,JSON.stringify(updatedStorage))
    },//...
};

解决方法

您还需要考虑更多共享部分:

iFrame = self.driver.find_element(By.XPATH,'//iframe[contains(@class,"widget-consent-frame")]')
        self.driver.switch_to.frame(iFrame)
        self.driver.find_element(By.XPATH,'//span[normalize-space()="Acepto"]').click()

但是,是的,使用单独的方法来完成不同的事情是更好的方法。它们不是完全根据所看到的数据类型来尝试变得聪明,而是完全按照您的要求进行操作-如果数据类型不匹配而不是做不可预测的事情,它们将失败。