React native 反应本机API数据
我有一个从API获取数据的类,它返回一个数组 在我这样称呼它的文件中:React native 反应本机API数据,react-native,React Native,我有一个从API获取数据的类,它返回一个数组 在我这样称呼它的文件中: let defaultMenu2 = ''; import GetCategories from '../constants/tabs'; GetCategories.renderTabs().then((response) => { console.log(response); defaultMenu2 = response; }); console.log('response----------'
let defaultMenu2 = '';
import GetCategories from '../constants/tabs';
GetCategories.renderTabs().then((response) => {
console.log(response);
defaultMenu2 = response;
});
console.log('response----------' + defaultMenu2);
console.log完美地显示了数组(在控制台中),但变量“defaultMenu2”始终为空
有人知道我做错了什么吗
提前谢谢
有人能解释一下如何持久化变量吗?当然不知道为什么我不能覆盖变量或对象
我试过这个:
let tabs2 = new Object();
GetCategories.renderTabs().then((response) => {
//console.log(response);
tabs2 = response;
alert('number 1 response #########'+JSON.stringify(tabs2));
});
alert('response#########' + JSON.stringify(tabs2));
“1号响应”警报完美地显示了我所需的内容,但其他“响应”警报是空对象
问题是我认为GetCategories.RenderTables()下面的代码是在GetCategories.RenderTables()重播之前呈现的..在您的示例中,renderTabs似乎返回了类似PromiseLike的内容,这表明它是异步发生的。这意味着很可能是打印“response---------”后,
然后
的效果会执行。请看一看示例,了解如何使用useEffect
和异步检索数据>useState
hooks。在数据存储到defaultMenu2之前,您的控制台正在调用,这就是为什么您将其设置为空的原因。谢谢,我将用所有代码编辑我的问题…这样可能会更清楚。我有一个进行API调用的外部文件,然后在主文件中它是数据的虚拟调用,我想用真实数据替换它。我想将它存储在同一个变量名上,这样我就不会更改很多代码。看看我现在更新代码的主要问题……正如@artcasbody提到的,为了能够从示例中检索异步数据,您必须使用useState
和useffect
挂钩。renderTabs似乎返回了一些PromiseLike,这表明它是异步发生的。这意味着然后的效果很可能在您打印“response---------”后执行。请看一看示例,了解如何使用useffect
和useState
挂钩异步检索数据。您的控制台在获取数据之前正在调用g存储在defaultMenu2中,这就是您将其设置为空的原因。谢谢,我将用所有代码编辑我的问题…这样可能会更清楚。我有一个外部文件来进行API调用,然后在主文件中它是数据的伪调用,我想用真实数据替换。我想将它存储在同一个变量名上,这样我就不会更改l代码的ot。看看我现在更新代码的主要问题……正如@artcasbody提到的,为了能够检索异步数据,您必须使用useState
和useffect
挂钩