反应切换组件

2024-02-02

我下面有这个简单的代码。当我按下切换按钮时,组件 Child 应该隐藏/显示,但事实并非如此。

我需要重新渲染一些东西吗? 我不想切换进/出 CSS 类,只需通过单击按钮进行切换

import React, {Component} from 'react';

let active = true

const handleClick = () => {
    active = !active
}

class Parent extends React.Component {
    render() {      
        return (    
            <div>  
                <OtherComponent />

                {active && <Child />}

                <button type="button" onClick={handleClick}>
                    Toggle
                </button>

            </div>            
        )           
    }
}

class Child extends React.Component {
    render() {

        return (    
            <div>          
                I am the child
            </div>            
        )             
    }
}

class OtherComponent extends React.Component {
    render() {       
        return (    
            <div>          
                I am the OtherComponent
            </div>            
        )           
    }
}

您需要通过状态获取或设置它:

class Parent extends React.Component {
    constructor(props, context) {
        super(props, context);

        this.state = {
            active: true,
        };

        this.handleClick = this.handleClick.bind(this);
    }

    handleClick() {
        this.setState({
            active: !this.state.active
        });
    }

    render() {
        return (
            <div>
                <OtherComponent />

                {this.state.active && <Child />}

                <button type="button" onClick={this.handleClick}>
                    Toggle
                </button>

            </div>
        )
    }
}

Note使用这种方法,您将重新:渲染整个父组件(及其子组件)。
当您传递一个prop到子组件,它将根据此 prop 渲染自己的内容(它可以渲染一个空的div或者其他的东西)。
有许多库可以让您轻松完成这项工作,例如反应崩溃 https://github.com/nkbt/react-collapse与动画和东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反应切换组件 的相关文章

随机推荐

  • 无法在android的webview中使用javascript播放音频

    在 Android 手机上 当我在 html 文件中使用以下代码时 音频正在播放 但是当我删除 自动播放 属性时 我无法在 webview 上播放音频 有人有解决方案吗
  • 如何在 Oracle 中“打开”XML 数据

    下面是我想用 PL SQL 重写的一些 TSQL 的示例 DECLARE xml XML SET xml
  • 使用 ButterKnife 库在 1 个片段中包含 2 个不同的视图

    我目前正在尝试使用 Android 的 ButterKnife 库来处理一些样板代码 https github com JakeWharton butterknife https github com JakeWharton butterk
  • 如何跟踪用户在网站上的时间

    我希望跟踪用户在网站上的平均时间 与谷歌分析的方式相同 以进行内部管理 做到这一点最简单的方法是什么 您可以通过以下方式获取时间 用户访问您的网站后 将 cookie 中的当前时间保存为 已访问 并且在下次访问时您可以获取它 如果已设置 更
  • 同时滚动多个div

    我正在尝试滚动多个div同时 当我滚动其中一个时div 我想报告所有div中的滚动 我动态创建 div 所以我使用这个功能document getElementsByClassName sub category container得到我所有
  • 在网格视图内填充下拉列表

    我在 Gridview 中有一个下拉列表 我必须显示与每个 id 关联的记录 并且该 ID 包含超过 10 条记录 那么我如何显示它们 protected void GridView1 RowDataBound object sender
  • libgdx 中四元数的 euler getPitch()、getRoll()、getYaw() 的旋转顺序?

    将四元数转换为欧拉角时 通常必须有轴旋转的顺序 例如这种可视化 http quaternions online libgdx 是如何工作的 四元数类具有以下功能 getRoll Math asin MathUtils clamp 2f w
  • 缩短(限制)句子的长度

    我有一列很长的名字 我想把它们剪到最大40 个字符长度 样本数据 x lt c This is the longest sentence in world so now just make it longer No in fact this
  • 在批处理文件中将反斜杠转换为转发[重复]

    这个问题在这里已经有答案了 将所有反斜杠转换为批处理文件中路径中的转发的最简单方法是什么 因为我需要使用 bash 来执行 SET string D path to folder ECHO string 基本上 您需要首先将字符串值存储到环
  • listadapter 中未调用 DiffCallback

    您好 我正在尝试在我的应用程序中使用 listadapter 和 diffcallback 不知何故 当我做某事时 视图根本不更新 当我将一些日志放入回调内的 areItemsTheSame 和 areContentsTheSame 中时
  • 如何计算工作时间以外的时间

    起初这看起来很简单 但事实证明这是一个真正令人头痛的问题 下面是我的表格 数据 预期输出和 SQL Fiddle 其中我必须解决我的问题 架构和数据 CREATE TABLE IF NOT EXISTS meetings id int 6
  • 如何将 pandas 数据框显示为 Flask-bootstrap 表?

    我想用 Flask 将 pandas 数据框显示为 bootstrap html 表 因此我尝试了以下操作 数据 csv 表 Name Birth Month Origin Age Gender Carly Jan Uk 10 F Rach
  • 如何告诉 NuGet 使用哪些 MSBuild 可执行文件?

    NuGet 显然有一些逻辑来确定要使用哪些 MSBuild 可执行文件 有没有办法覆盖这种行为 或者至少有一种方法告诉它使用 x86 MSBuild 而不是 x64 MSBuild 自动检测 使用 C Program Files x86 M
  • 在 data.frame 中按组显示加权平均值

    有关命令的问题by and weighted mean已经存在 但没有人能够帮助解决我的问题 我是 R 新手 更习惯数据挖掘语言而不是编程 我有一个数据框 其中包含每个人 观察 行 的收入 教育水平和样本权重 我想按教育水平计算收入的加权平
  • 在 Chrome 扩展程序的权限上下文中,“http://*/*”、“https://*/*”和“”意味着什么

    我正在尝试了解 Google Chrome 扩展的工作原理 我正在学习manifest json我遇到权限的文件 http https and
  • 如何挂载 Android 中的电源按钮?

    在 Android 设备上 唯一的按钮是音量按钮和电源按钮 我想让应用程序对按下电源按钮 长按和短按 做出反应 这是怎么做到的 现有的答案并没有完全回答问题 并且遗漏了足够的细节 如果不进行更多调查 它们将无法发挥作用 我将分享我所学到的解
  • 当 GOARCH=386 并导入“C”时,Go 构建错误“构建约束排除所有 Go 文件”

    我正在使用 CGO 包导入 C 代码 我想构建一个x86 386 它的Windows版本 我发现这应该通过设置来完成GOARCH 386 它在我的默认环境设置 GOARCH amd64 上正确构建 但是 当我将环境变量设置为 386 时 出
  • Pandas 正则表达式替换另一列中的值

    我有 2 个 pandas 列 一列有文件路径 另一列有新文件夹名称 我尝试使用正则表达式替换将文件夹名称替换为新文件夹名称 df new path df root str replace r A 0 9 END df new folder
  • SQL Server 中运算符 != 和 <> 有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 我应该在 SQL 中使用 或 表示不等于吗 https stackoverflow com questions 723195 should i use or for not equal in tsql
  • 反应切换组件

    我下面有这个简单的代码 当我按下切换按钮时 组件 Child 应该隐藏 显示 但事实并非如此 我需要重新渲染一些东西吗 我不想切换进 出 CSS 类 只需通过单击按钮进行切换 import React Component from reac