首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过单击按钮进行节更改

通过单击按钮进行节更改
EN

Stack Overflow用户
提问于 2019-05-17 09:52:02
回答 4查看 278关注 0票数 0

我正在制作一个网站反应反应带,我有一个部分,其中包含图表和按钮,其功能是取代上述图表与另一个图表包含更多的细节。然而,我正在努力制定一个具体的代码。

我尝试将图表放在一个单独的组件中,并通过在按钮上使用handleclick函数(使用'onclick')切换它的内容。

我真的对我的代码的清晰性没有信心,所以我尝试复制我在小提琴中做的更简单的事情。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class hello extends React.Component {
    render() {
    return (
          <h2>hello</h2>
    );
    }
}

class bye extends React.Component {
    render() {
    return (
          <h2>goodbye</h2>
    );
    }
}

class Toggle extends React.Component {
  constructor(props) {
    super(props);
    this.state = {isToggleOn: true};
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    this.setState(prevState => ({
      isToggleOn: !prevState.isToggleOn
    }));
  }

  render() {
    return (
        <div>
        <div>
          {this.state.components[hello]}
        </div>
        <button onClick={this.handleClick}>
          switch
          {this.setState({components:[<bye />]})}
        </button>
      </div>
    );
  }
}

ReactDOM.render(
  <Toggle />,
  document.getElementById('root')
);

“切换”组件中的div应该在组件"hello“和”拜“之间切换。

实际上,应该显示的当前部分("hello")将被另一个部分(“拜”)替换为单击它们下面的按钮。

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-05-17 10:04:27

如果您只想通过单击按钮在两个组件之间切换,则可以使用条件呈现。将render方法更改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render(){
    return (
        <div>
            {this.state.isToggleOn?<Hello />:<Bye />}
            <button onClick={this.handleClick}>Switch</button>
        </div>
 }

此外,将组件的名称保留为第一个字符,大写或react可能会引起抱怨。而使用基于Class的组件已经过时了。Hooks是现在最热门的东西。因此,尝试使用更多的Functional组件。

注意:我的答案假设您使用babel presets来转换jsxes6语法。如果没有,去看看科林的答案。它也使用钩子。

票数 1
EN

Stack Overflow用户

发布于 2019-05-17 09:57:23

为什么不导入所有的部分视图并根据条件有条件地呈现它们?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{condition & <View1/> 
票数 1
EN

Stack Overflow用户

发布于 2019-05-17 09:58:37

您的代码中有一些错误。下面是一个使用条件呈现来做您想要的事情的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React, { useState } from "react";
import ReactDOM from "react-dom";

const Hello = () => {
  return <h2>hello</h2>;
};

const Bye = () => {
  return <h2>bye</h2>;
};

const App = () => {
  const [toggled, setToggled] = useState(true);

  const handleClick = () => {
    setToggled(!toggled);
  };

  const render = () => {
    if (toggled) {
      return <Hello />;
    }

    return <Bye />;
  };

  return (
    <div>
      <button onClick={handleClick}>toggle</button>
      {render()}
    </div>
  );
};

ReactDOM.render(<App />, document.getElementById("root"));

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

https://stackoverflow.com/questions/56191327

复制
相关文章
HTML单击按钮弹出悬浮窗+页面遮罩
<meta charset="utf-8" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
用户7718188
2021/10/08
15.8K1
Android之按钮点击事件(单击、双击、长按等)
在布局文件中添加按钮点击事件 1、在xml文件中 为 Button 添加android:onclick属性
程思扬
2023/07/24
2.4K0
类模块应用示例:获取单击的命令按钮名称
这个示例来源于ozgrid.com,有兴趣的朋友可以研究。在用户窗体上共有24个命令按钮,如下图1所示。
fanjy
2023/10/04
2950
类模块应用示例:获取单击的命令按钮名称
选择篇(039)-单击按钮时event.target是什么?
导致事件的最深嵌套元素是事件的目标。你可以通过event.stopPropagation停止冒泡
齐丶先丶森
2022/05/12
1.6K0
WPF 点击按钮时更改按钮样式界面效果的 XAML 实现方法
在 WPF 中按钮 Button 将会吃掉路由事件,此时的 EventTrigger 如果通过 RoutedEvent 是 MouseLeftButtonDown 那么将会拿不到路由事件,也就触发不了,因此样式将不会变更。简单的解决方法就是通过 VisualStateManager 配合 VisualState 来实现
林德熙
2020/08/31
4.3K0
MyVBA加载宏——添加自定义菜单02——给按钮添加单击事件
在2003版本之前的Excel里使用过VBA的话,应该接触过在Excel里添加自定义菜单,使用方法和前面说的在VBE里添加菜单是类似的。
xyj
2020/07/28
2.8K0
MyVBA加载宏——添加自定义菜单02——给按钮添加单击事件
Android Button 单击事件
方法一:在XML文件中指定 单击事件函数 <Button             android:id="@+id/button1"             android:layout_width="120dip"             android:layout_height="wrap_content"             android:layout_alignParentLeft="true"             android:layout_below="@+id/textView1
磊哥
2018/05/08
1.7K0
委托(一个主窗体统计多个从窗体的按钮单击的次数)
  最近在学习金老师的《.NET2.0面向对象编程揭秘》,学到了13章,委托、事件驱动和异步调用。书上有个试一试,要求:利用委托,达到一个主窗体统计多个从窗体的按钮单击的次数。 效果如下: fr
八哥
2018/01/18
1.4K0
委托(一个主窗体统计多个从窗体的按钮单击的次数)
js通过按钮或链接打开文件
var url = selected[0].PUBLICMATERIAL;if(!url){console.log("获取公示材料查看路径失败!");return false;}try {var a = document.createElement("a");a.setAttribute("href", url);a.setAttribute("target", "_blank");a.setAttribute("id", "openwin");document.body.appendChild(a);a.
在下是首席架构师
2022/08/18
10.4K0
Selenium中单击Element:ElementClickInterceptedException
element = driver.find_element_by_css(‘div[class*=”loadingWhiteBox”]’)
kirin
2021/04/02
1.1K0
weex-08-单击事件
本节任务 学会组件添加单击事件 标准格式 <text v-on:click="方法名称">点我啊</text> 省略格式 <text @click="方法名称">点我啊</text> 下面我们创建
酷走天涯
2018/09/14
1.7K0
weex-08-单击事件
手机点击按钮进行切换图片
项目目录 MainActivity.java package top.gaojc.myapplication; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.ButtonBarLayout; import android.content.Intent; import android.os.Bundle; import android.service.autofill.OnClick
是阿超
2021/10/15
3.5K0
ios通过按钮点击异步加载图片代码
@interface UIButton (AsyncImage) //size by point (void)setImageFromURL:(NSString )urlString adjustToSize:(CGSize)size completion:(void (^)(void))completion logo:(UIImage )logoImage; @end @implementation UIButton (AsyncImage) (void)setImageFromURL:(NSStr
大师级码师
2021/10/29
1.6K0
全志平台如何通过应用更改DDR频率
调试系统或者开发产品或者产品在客户使用过程中,我们经常需要调整DDR频率来进行运行测试或者发现DDR频率太高导致一些问题需要调整DDR频率,但是全志平台只能通过刷机来修改DDR频率,这在测试过程中或者用户使用过程中非常不方便,特别是机器到用户手上不可能拆机寄回重新刷机,那有没有办法通过安装应用来修改DDR频率呢?方法是有的,而且很简单。
kaicer
2023/07/01
5890
c语言 通过更改ASCII码实现替换字符
题目要求: 将"China"译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“a”后面第四个字母是"e"。因此,“China”应该译为“Glmre”。
吃猫的鱼Code
2023/02/02
1.1K0
odoo 通过Javascript显示或隐藏form自带按钮
odoo14/custom/estate/static/src/js/hide_or_show_form_button.js
授客
2023/05/24
1.8K0
odoo 通过Javascript显示或隐藏form自带按钮
Oracle通过rman进行克隆
  备库的service_name设置为db_standby;需要到参数文件修改。
星哥玩云
2022/08/18
4090
点击加载更多

相似问题

如何更改单击按钮上的节/内容

11

通过单击按钮更改语言

63

通过单击更改按钮颜色

131

如何通过单击按钮更改

20

电源按钮(CSS通过单击按钮更改)

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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