当前位置: 首页 > 知识库问答 >
问题:

如何在自定义组件中显示异步存储中的数据?

费星晖
2023-03-14

我是新来的反应-本地人。所以,我有一个名为任务的自定义组件,我有一些数据存储在Asyncstore中。我已经检查了数据是否确实通过另一个组件/模态存储在Asyncstore中。但是当我试图从Asyncstore获取数据时(请参阅下面的代码),它不会显示任何内容。我的自定义组件显示数据很好,只是无法从Asyncstore获取/显示数据。我是不是做错了什么?请帮帮我。

函数的内部调用:

  <Task name={async ()=>await AsyncStorage.getItem('taskname')}
                        desc={async ()=>await AsyncStorage.getItem('taskdesc')}
                        date={async ()=>await AsyncStorage.getItem('taskdate')}/>

共有3个答案

桓信鸥
2023-03-14

我在这里看到了许多解决方案,但是您还应该添加加载状态,因为您的任务组件首先将接收空字符串。

因此,更好的方法是添加加载,直到您收到数据。

this.state={
   loading: true,
   name : '';
   desc : '';
   date : '';
}

async componentDidMount(){

 let taskname =  await AsyncStorage.getItem('taskname')
 let taskdesc =  await AsyncStorage.getItem('taskdesc')
 let taskdate =  await AsyncStorage.getItem('taskdate')
 this.setState({ ...set your state here}, () => {
  and then update the loading state.
 })
  }

当加载为true时,可以呈现加载组件或null。

钱峻
2023-03-14

将存储的值放入状态值并使用它。

js prettyprint-override">this.state={
   name : '';
   desc : '';
   date : '';
}
...

async getdata() {
let taskname =  await AsyncStorage.getItem('taskname')
let taskdesc =  await AsyncStorage.getItem('taskdesc')
let taskdate =  await AsyncStorage.getItem('taskdate')
this.setState({
   name : taskname;
   desc : taskdesc;
   date : taskdate;
});
}
...
  <Task name={this.state.name}
                        desc={this.state.desc}
                        date={this.state.date}/>
毕胡非
2023-03-14

您必须将此代码放在componentDidMount中,并返回调用。

constructor() {
     super();
     this.state = {
       name : '';
       desc : '';
       date : '';
     }
   }
 componentDidMount= async()=>{
 let taskname =  await AsyncStorage.getItem('taskname')
 let taskdesc =  await AsyncStorage.getItem('taskdesc')
 let taskdate =  await AsyncStorage.getItem('taskdate')

 }

 render(){
 return(
 <View>
 <Task name={this.state.name} desc={this.state.desc} date={this.state.date}/>
 </View>
 )
 }
 类似资料:
  • 根据Spark数据集介绍: 在我们期待Spark 2.0的时候,我们计划对数据集进行一些令人兴奋的改进,具体来说:。。。自定义编码器–虽然我们目前为各种类型自动生成编码器,但我们希望为自定义对象打开一个API。 并且尝试将自定义类型存储在中会导致以下错误: 无法找到存储在数据集中的类型的编码器。导入sqlC支持原始类型(Int、String等)和产品类型(case类)ontext.implicit

  • 问题内容: 我不确定node.js如何在异步中实现哪些功能,在异步中没有实现的功能以及如何创建自定义异步功能。 说我想创建一个自定义的异步函数。如果只是因为我对异步函数回调或cb调用了我的最后一个参数而只知道其异步函数,我会感到惊讶: 我尝试了类似的方法,但它无法异步运行。您如何告诉node.js f实际上是异步的? 问题答案: 注意 :此答案写于2014年,在出现之前,在Promises流行之前

  • 我有一个自定义ProgressBar: 然而,它没有工作--后台任务正在执行,但ProgressBar没有显示。如何使用AsyncTask在活动顶部显示ProgressBar?

  • 我正在我的Wordpress公文包网站上工作,并为我的公文包部分创建了一个自定义帖子类型。当用户单击my portfolio链接时,会将他们带到archive-portfolio.php,其中显示我所有项目的图库;当用户单击项目时,会将他们带到single-portfolio.php,其中显示关联的项目。 一切都正常工作,样式正确,但现在我想让archive-portfolio.php上的gall

  • 我的文本文件如下所示 我使用下面的代码片段将文本逐行存储在数组列表中,并将整个文件显示为输出。 但我只想显示三列TMAX,TMIN,DMAX。

  • 我有以下对象需要存储在Cassandra中。我需要使用UDT还是有其他方法来存储对象。我需要最终使用存储库方法从spry-boot应用程序存储它。