我正在尝试在React Native应用中实现AsyncStorage。我编写了一个自定义钩子,以处理与保存到AsyncStorage和从AsyncStorage中读取有关的所有逻辑。
第一个自定义函数saveData
起作用。第二个readData
非常难以使用。我插入到函数中的console.log
中没有一个显示在我的终端中,因此即使它被正确调用也没有被使用(或者至少我有99%的把握正在被使用) (准确地调用)在useEffect
的{{1}}中,这是我的应用程序的入口点。
我可以看到,在App.js
的{{1}}上,line 12
是一个承诺。您可以在注释掉的代码中看到我处理数据的位置,以便实际上可以读取AsyncStorage中存储的语言,这是我的目标。但是我想做的是:
App.js
内部读取数据,这不是我想要的。我非常感谢有关如何移动逻辑的想法,这样我就不必从currentLanguage
处理Promise,而可以从{ {1}}。
这是我的自定义钩子的代码:
App.js
这是我的App.js
中的代码:
readData
非常感谢所有帮助!
答案 0 :(得分:2)
const [readData] = useLocalStorage();
您仅访问数组的第一个元素,即saveData
函数(尽管您为变量命名)。 readData
是第三名。
const [saveData, error, readData] = useLocalStorage();
或者,如果要按名称访问函数,则需要更改钩子以返回对象而不是数组:
// At the end of the hook:
return { saveData, errorMessage, readData };
// In your component:
const { readData } = useLocalStorage();