首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >运行Javascript以从JSX中基于switch语句加载某个组件

运行Javascript以从JSX中基于switch语句加载某个组件
EN

Stack Overflow用户
提问于 2020-11-08 08:10:42
回答 1查看 48关注 0票数 0

解释起来有点棘手,所以标题可能不太清楚,但基本上我正在处理一个ReactJS项目,其中我有一个父组件,这个组件将呈现其他组件,但是基于不同的道具或状态将决定加载哪个组件。

我使用的是一个函数组件,最初是父组件返回方法上面的if/switch语句逻辑,然后将这个变量放在父组件内的JSX中来呈现子组件。但是,这使得它很难维护,因为它是一个相当大的父组件,因此想让它更加清楚,并发现您可以使用{() => {//do stuff here }}从JSX内部运行一些javascript。

因此,我的JSX中有以下代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function ParentComponent(props)
{
    return (
        <div className='my-container'>
            {
                    () => {

                        console.log("Crash Details being loaded");
                        if (selectedCrashGroup === null) {
                            switch (props.match.params.project_type) {
                                case "Android":
                                    return (
                                        <CrashSummary time_period={timePeriod}
                                            project_id={props.match.params.project_id}
                                            project_stats={projectStats}
                                            affected_files={affectedFiles}/>
                                    )
                            }
                        } else {
                            return (
                                <CrashGroupDetails refreshCrashGroupData={refreshCrashGroupData}
                                            crashGroup={selectedCrashGroup}
                                            project_id={props.match.params.project_id}
                                            handleUserAssignmentClick={handleUserAssignmentClick}
                                            projectMembers={projectMembers}
                                            selectedAssignmentDetails={selectedAssignmentDetails}
                                            projectType={props.match.params.project_type}
                                            comment_id={props.match.params.comment_id}/>
                            )
                    }
                }
            }
        </div>
    )
}

但是,这样做--在此方法中返回的组件-- CrashDetailsCrashSummary不会被呈现,console.log行也不会被写入。

我所试图做的是不可能的,或者如果有可能,我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-08 08:44:01

基本上,您只是定义了一个函数,但从未调用它。

与您的示例类似,我定义了一个函数,但从未调用它。因此,屏幕将为空白。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default function App() {
  return (
    <div className="App">
      { 
        (() => <h1>Hello React</h1>)   /* HERE */
      }
    </div>
  );
}

现在我们得叫它了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div className="App">
      { 
        (() => <h1>Hello React</h1>) ()   /* here */

      }
    </div>

更好的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default function App() {

  // Defining a function
  const content = () => <h1>Hello React</h1> ;

  return (
    <div className="App">
      { content() }
    </div>
  );
}

codeSandBox

{() => {//do stuff here }} vs { 1+ 2 // any expression}

不同的是,后者将在前面的函数创建的地方立即调用,但不会调用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64740240

复制
相关文章
Jenkins 更新中心证书更新
2021 年 3 月 29 日,我们会更新 Jenkins 更新中心的证书。当前的证书将会于 2021 年 4 月过期。当新证书启用后,Jenkins 2.178 之前的版本(2018 年)就无法与默认的更新中心以及实验性更新中心通讯。对于自行部署的更新中心,则不会收到影响。对于插件更新,更新中心会支持一年内的 Jenkins core 的版本,2.204 就是最老的版本。
LinuxSuRen
2021/04/13
1.1K0
Jenkins 更新中心证书更新
ubuntu18.04更新内核_如何查看linux系统内核版本
deb http://security.ubuntu.com/ubuntu trusty-security main
全栈程序员站长
2022/09/25
3K0
ubuntu18.04更新内核_如何查看linux系统内核版本
在线更新ingress证书
在线编辑ingress,替换secretName的值由ingress-secret2020,替换为ingress-secret2021,保存生效
三杯水Plus
2020/07/17
1.1K0
更新Kubernetes APIServer证书
本文我们将了解如何将一个新的 DNS 名称或者 IP 地址添加到 Kubernetes APIServer 使用的 TLS 证书中。在某些情况下默认的证书包含的名称可能不能满足我们的要求,又或者是 APIServer 地址有所变化,都需要重新更新证书。
CNCF
2020/09/04
3.6K0
更新Kubernetes APIServer证书
kubernetes集群证书更新
kubeadm配置的集群默认的证书是1年,到期后证书升级是个很麻烦的事情。,该脚本可将kubeadm生成的证书有效期更新为10年
jwangkun
2021/12/23
1.5K0
更新 Kubernetes APIServer 证书
本文我们将了解如何将一个新的 DNS 名称或者 IP 地址添加到 Kubernetes APIServer 使用的 TLS 证书中。在某些情况下默认的证书包含的名称可能不能满足我们的要求,又或者是 APIServer 地址有所变化,都需要重新更新证书。
我是阳明
2020/09/04
1.2K0
如何更新Linux内核来提升系统性能?
Linux内核的开发速度是前所未有的,大概每二三个月就会有一个新的主要版本发布。每次发布都带来了几项新的功能和改进,许多人可以充分利用它们,让计算体验更快、更高效或者有其他方面的提升。
用户8710806
2021/06/09
9200
CentOS6内核太老更新内核
title: CentOS6内核太老更新内核 date: 2020-04-01 23:31:42 tags: [CentOS] categories: [CentOS]
JaneYork
2023/10/11
4590
CentOS6内核太老更新内核
如何更新Linux内核来提升系统性能?
Linux内核的开发速度是前所未有的,大概每二三个月就会有一个新的主要版本发布。每次发布都带来了几项新的功能和改进,许多人可以充分利用它们,让计算体验更快、更高效或者有其他方面的提升。
用户8710806
2021/06/11
1.3K0
如何更新 Linux 内核来提升系统性能
目前的 Linux 内核的开发速度是前所未有的,大概每2到3个月就会有一个主要的版本发布。每个发布都带来几个的新的功能和改进,可以让很多人的处理体验更快、更有效率、或者其它的方面更好。
用户8710643
2021/06/09
9580
如何给驱动程序签名?怎么做微软WHQL认证?
从 Windows Vista 开始,基于 x64 的 Windows 版本要求在内核模式下运行的所有软件(包括驱动程序)进行数字签名才能加载。未签名的驱动程序被系统阻止,数字签名可确保驱动程序已由受信任的开发人员或供应商发布,并且其代码未被修改。
沃通WoTrus数字证书
2023/03/14
1.1K0
如何给驱动程序签名?怎么做微软WHQL认证?
linux更新内核版本
首先声明一下为什么要更新linux内核版本: 每一个idc服务商都采用的不是最新的源,但会是最稳定的源,我们更新内核版本就和更新病毒库一样,更新一下最好,不想更新的也无所谓,毕竟idc服务商会及
Youngxj
2018/06/07
6.7K0
为什么反作弊软件利用内核驱动程序
最近,在Reddit上有很多话题涉及Valorant被称为“ Vanguard”的反恐热的发布。主要的怀疑是事实,它是潜在地侵犯隐私的,这是一个完全有效的理论。我并没有破坏在您的个人计算机上运行第三方应用程序后的隐私复杂性,但是有关在用户模式和内核模式下进行监视的可能性的许多信息都是有缺陷的。很少有张贴者反对“内核=坏”蜂巢,但是大多数游戏玩家从安全性方面都不知道这意味着什么。
franket
2020/11/03
18.5K0
debian10更新内核_debian升级内核
http://blog.csdn.net/ctbinzi/article/details/6006931
全栈程序员站长
2022/11/02
2.8K0
将hello程序作为驱动程序编译进系统内核
恩,可能是我比较愚钝,一个内核编译搞了一天,各种问题,各种bug,几度无奈,也是因为我突发奇想,并没有按照原来的那种操作,我直接把helloworld程序放到内核模块中编译成了一个驱动程序,虽然其中遇到了不知道多少的问题,不过最终是个完美的结局,给自己点个赞! 好了,废话不多说,直接开始还原我的helloworld驱动内核程序编译流程。
roobtyan
2019/02/21
1.5K0
将hello程序作为驱动程序编译进系统内核
如何在知行之桥EDI系统中配置更新证书
在EDI系统中与交易伙伴实现数据传输时为保证数据的安全性,需要使用一对数字证书对数据进行签名和加密,但是在申请或购买证书时会给证书一个有限期,证书到期时,您需要重新申请或购买新的证书进行更新,那么在知行之桥中如何配置和更新证书呢?本文将介绍如何在知行之桥系统中配置和更新自己的证书,以及交易伙伴的证书。
知行软件EDI
2022/05/30
6710
如何在知行之桥EDI系统中配置更新证书
通过更新API证书解决云支付证书过期问题
服务商平均每年会遇到一个问题,即云支付的商户所拥有门店在进行退款时提示“证书已过期”。
Daqu
2020/10/16
2K0
通过更新API证书解决云支付证书过期问题
Ubuntu 14.04 16.04 Linux nvidia 驱动下载与安装
但是有时候,驱动不够新,比如14.04用的是340.98版本,如果手动安装驱动可以参考官网指南。
zhangrelay
2019/01/23
4.3K0
点击加载更多

相似问题

使用自签名证书的内核模式驱动程序签名

17

简单内核模式驱动程序

24

内核模式和用户模式驱动程序

12

内核模式驱动程序与IOCTL

112

Windows内核模式驱动程序开发

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文