首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从另一个屏幕重新挂载屏幕?(使用新参数再次刷新整个应用程序)

如何从另一个屏幕重新挂载屏幕?(使用新参数再次刷新整个应用程序)
EN

Stack Overflow用户
提问于 2019-05-01 17:04:21
回答 1查看 64关注 0票数 0

我有一个可配置的应用程序,它的一切都是从一个中间件(如颜色和内容),基于唯一的id,所谓的appId的应用程序。在主屏幕中,我在componentDidMount()函数中从中间件获取所有需要的数据,然后在以后使用它。这是我第一次使用默认的appId,componentDidMount()如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
componentDidMount() {
this.setState({ isLoading: true });
fetch(
  API +
    "configurations" +
    "?" +
    "uuid=blabla" +
    "&" +
    "appId=" +
    appId +
    "&" +
    "locale=" +
    locale +
    "&" +
    "gid=" +
    gid,
  {
    method: "GET",
    headers: {
      Accept: "application/json"
    }
  }
)}

我有另一个屏幕(设置屏幕),在那里我有一个框,用户可以插入appId作为输入。

当用户插入appId (在设置页面中)时,我想导航回主屏幕,并使用用户插入的新appId重新获取数据。设置屏幕如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
state = {
newappId: "" };

handlenewappId = text => {
this.setState({ newappId: text });
};

.....

<Item regular>
          <Input
            onChangeText={this.handlenewappId}
            placeholder="Regular Textbox"
          />
          <Button
            onPress={() => {
              navigation.navigate("Home");
            }}
          >
            <Text>Save</Text>
          </Button>
</Item>

但是,当我执行navigation.navigate("Home")时,不会触发componentDidMount()以便再次从中间件获取数据(这是预期的,因为它只是第一次触发)。我该怎么办?解决方案是什么?

我已经尝试了componentDidMount() function is not called after navigation中给出的解决方案,但它对我不起作用。

我还试图将componentDidMount()中的代码移到一个单独的函数中,并从设置页面调用它,但我无法使其工作。

=更新:=

我能够用下面的"vitosorriso“给出的答案解决这个问题。然而,出现了一个新的问题。抓取完成后,我将响应推送到状态,然后在我的主屏幕上使用它,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fetchData = async () => {
this.setState({ isLoading: true }, async () => {
   //fetch the data and push the response to state. e.g:

   this.setState({ page: data, configs: data2, isLoading: false });

}}
....

render() {
const { configs, page, isLoading, error } = this.state; //getting the data fetched in the fetch function and pushed to the state

if (isLoading || !page || !configs) { 
   //if data is not ready yet
  );

// Use the data to extract some information

let itemMap = page.item.reduce((acc, item) => {
  acc[item.id] = item;
  item.attributes = item.attributes.reduce((acc, item) => {
    acc[item.key] = item.value;
    return acc;
  }, {});
  return acc;
}, {});
}}

应用程序第一次启动时,一切正常,没有错误,但如果我转到设置页面,按下按钮导航回到主屏幕并再次获取数据,我会遇到错误:"items.attributes.reduce不是一个函数“。我假设的原因是,"items.attributes“已经有一个值(从第一次),不能再提供新的数据。

当从设置页面导航到主页时,有没有办法清除所有变量?

EN

回答 1

Stack Overflow用户

发布于 2019-05-01 17:22:43

我已经在我的应用程序中解决了同样的问题,使用了类似的概念( componentDidMount() function is not called after navigation ),但使用了不同的语法,它对我很有效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// your home class
// no need to import anything more

// define a separate function to fetch data
fetchData = async () => {
  this.setState({ isLoading: true }, async () => {
    // fetch your data here, do not forget to set isLoading to false
  }
}

// add a focus listener onDidMount
async componentDidMount () {
  this.focusListener = this.props.navigation.addListener('didFocus', async () => {
    try {
      await this.fetchData() // function defined above
    } catch (error) {
      // handle errors here
    }
  })
}

// and don't forget to remove the listener
componentWillUnmount () {
  this.focusListener.remove()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55939850

复制
相关文章
屏幕硬件参数选取
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106734.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/30
6580
又卡了~从王者荣耀看Android屏幕刷新机制
这下大家应该知道了,帧就是一个静止画面,很多个帧一起就组成了视频、电影、游戏画面。
码上积木
2021/04/30
9290
[029]如何获取屏幕帧率
在王小二图解Android【006】高帧率屏幕这期的视频中,我给大家揭秘今年所有安卓旗舰都会吹的高帧率屏幕,其实高帧率屏幕不需要应用开发人员去主动适配,只要应用能在当前的硬件配置下,规定时间(1s/屏幕帧率)中完成一帧的绘制就可以了。
王小二
2020/06/08
2.2K0
优化可变刷新率屏幕的 App 体验
WWDC21中发布的macOS Monterey中新增了可变刷新率的Adaptive-Sync显示技术,自此行业通用的可变帧率技术登录Mac生态;今天我们就围绕苹果生态中的两种可变帧率显示技术,讨论如何为用户呈现最佳体验;本文中首先我们会介绍一下macOS中的Adaptive-Sync技术;这项技术为macOS的全屏显示的App和游戏提供了更加灵活的帧率,更加流畅体验,基于此深入讨论有关顺滑渲染的最佳实践;然后我们会了解现有的iPad Pro和iPhone 13 Pro上的ProMotion技术,并进一步探讨能在不同帧率下基于CADisplayLink的最佳技术实践,在自定义绘图时为用户带来流畅的体验;本篇文章是基于Session10147 - Symbolication: Beyond the basics撰写,该Session的演讲者是来自Apple GPU软件团队的WindowServer工程师Kyle Sanner和CoreAnimation工程师 Alex Li。
有赞coder
2021/12/06
2.7K0
优化可变刷新率屏幕的 App 体验
屏幕录像专家最新版下载安装:屏幕录像专家如何放大缩小屏幕
屏幕录像专家是一款专业的屏幕录像制作工具,使用它可以轻松地将屏幕上的软件操作过程、网络教学课件、网络电视、网络电影、聊天视频等录制成FLASH动画、WMV动画、 AVI动画或者自播放的EXE动画。那么屏幕录像专家怎么用,快和小编去看看吧。
用户10515912
2023/04/30
1.4K0
屏幕录像专家最新版下载安装:屏幕录像专家如何放大缩小屏幕
从屏幕读取字符串,并提取其中数字串,再次打印到屏幕或写入一个文件
  毕业两年多,几乎天天游弋在代码的海洋中,每天都在跟茫茫的多媒体SDK和开源库打交道,这次去XXXX公司面试中却无法脱机写个简单字符串程序。思路流程虽然清楚(当时只是画了个流程图写了几个伪代码),但实现时发现自己平时很少用这些系统函数,编码时发现对系统函数入口参数,返回参数模棱两可。关键一点还是平时写代码太依赖一linux的系统man命令帮助查找,平时写代码几乎很少人为去记忆这些系统函数入口参数,返回值等。因为这系统函数都是标准的C库函数,linux桌面系统如ubuntu,基本上man一下就懂了,最惨的情况下去查一下C库。这次面试离开电脑,一张纸,一支笔就显得茫然。下文是回家后借助于linux的系统的MAN命令和GCC调试编码实现。以告诫和警示自己。
用户4148957
2022/06/14
1.1K0
从屏幕读取字符串,并提取其中数字串,再次打印到屏幕或写入一个文件
Android从屏幕底部弹出popupWindow
先看一下效果,看看是不是你想要的效果,免得浪费大家的时间,有一点说明,由于我录制的 gif 是用的模拟器,所以没有屏幕变暗的效果和加速的弹起的效果,实际效果以真机测试为准。
程序员飞飞
2020/02/27
3.5K1
Android从屏幕底部弹出popupWindow
Android 开发必须了解的屏幕刷新机制
原文链接 https://juejin.cn/post/7291935035530313755
GeeJoe
2023/10/24
4420
Android 开发必须了解的屏幕刷新机制
Mastercam如何储存屏幕视角?
当图面中时常会用到某一个屏幕视角,为了减少不断重复的变化屏幕视角,可以将目前的屏幕视角储存起来·当需要这个屏幕视角时,可以直接切换到该视角。
lrglu
2022/03/30
7920
Mastercam如何储存屏幕视角?
使用ContentObserver观察屏幕旋转
http://blog.csdn.net/qinjuning/article/details/7047607
望天
2018/08/02
7100
html+CSS让背景图片充满整个屏幕
大家好,又见面了,我是你们的朋友全栈君。 由于给网页设置背景图时,需要设置背景图不重复且充满整个浏览器屏幕。 给body标签指定背景图,这样背景图就可以填充整个浏览器viewport了。 其实,该方案对所有的块级容器都可以生效。块级容器的宽高是动态的,那么背景图将自动伸缩,充满整个容器。 可设置body标签的CSS样式如下: body{ /*加载背景图*/ background-image:url(./images/background.jpg);
全栈程序员站长
2022/09/06
1.6K0
使用前置音响的固体电影屏幕如何工作
本次演讲来自SMPTE 2019,演讲者是Julien Berry和Pierre Vincent。本次演讲的内容是使用前置音响的固体电影屏幕如何工作,目的是解决音响折中问题。
用户1324186
2020/04/21
6020
mipiLCD屏幕参数_mipi接口液晶屏
主屏通过lt8911exb 将mipi信号转换成EDP信号输出,调试从大的方向上看,主要是两方面,一个是bootloader阶段的lt8911exb初始化,为了让现实过程更完整,需要在lk的display init之前就要将lt8911exb准备好.当lt8911exb准备好后,就可以当lt8911exb不存在,以平时的方式去调试一个屏幕。本次调试lt8911exb 的I2C接到SDM450的I2C3接口上,以下是调试步骤概要
全栈程序员站长
2022/11/19
1.5K0
mipiLCD屏幕参数_mipi接口液晶屏
【Android 屏幕适配】屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )
Android 屏幕尺寸类型如下 , 安卓设备的屏幕尺寸复杂性远远高于 iOS 设备 , Android 设备有两万种屏幕类型 , iOS 只需要适配五种分辨率即可 ;
韩曙亮
2023/03/30
6.6K0
【Android 屏幕适配】屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )
如何使用 Mac屏幕共享进行远程控制
Mac上有一项非常实用的功能叫屏幕共享,通过它我们能够远程控制另一台Mac,那么如何使用 Mac屏幕共享进行远程控制?Mac屏幕共享怎么使用呢?下面小编就为大家介绍一下使用的具体方法。
MAC先森
2019/09/22
2.7K0
WPF 底层 从手指触摸屏幕到笔迹在屏幕显示中间的步骤
整个 WPF 就是一个UI框架,一个 UI 框架最重要的是 交互 和 显示 部分,而书写这个功能将会完全贯穿 WPF 整个框架的功能。本文非入门级博客,本文包含了大量链接博客,阅读本文你将会了解从用户手指触摸屏幕到最终屏幕打印出笔迹的应用程序执行的步骤
林德熙
2020/08/25
1.2K0
【Android 屏幕适配】屏幕适配基础概念 ④ ( 屏幕适配限定符 | 手机/平板电脑设备屏幕适配 )
Android 系统加载应用资源时 , 会根据当前运行应用的设备的相关属性 , 如 : 屏幕尺寸 / 屏幕像素密度 / 宽高比 / 屏幕方向 等属性 , 加载不同的屏幕适配限定符目录下的资源 ;
韩曙亮
2023/03/30
7.1K0
【Android 屏幕适配】屏幕适配基础概念 ④ ( 屏幕适配限定符 | 手机/平板电脑设备屏幕适配 )
点击加载更多

相似问题

new导航挂载一个屏幕,然后不接受从另一个屏幕再次传递的新params

12

如何在putty中刷新整个屏幕

13

如何从主屏幕创建新屏幕?

22

如何在用户进入屏幕时自动重新加载或刷新整个屏幕。在react原生中

110

如何通过编程使用android应用程序捕获整个屏幕屏幕截图?

115
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文