初学react(七):if 判断

2023-10-27

思路:先定义一个state里的一个状态,因为如果状态改变都会重新执行render,所以在render写上判断动态的赋值,也可以使用三目运算。

import React from 'react';
import './App.css';
import Persion from './Persion/Persion';
class App extends React.Component {
  /**
   * state: 用于改变组件内状态的值(动态)
   * props: 用于组件通信传值
   */
  state = {
   persions: [
     {
       name: '渣渣辉',
       count: '30'
     },
     {
        name: 'aaa',
        count: '20'
      },
      {
        name: 'bbb',
        count: '10'
      },
      {
        name: 'ccc',
        count: '5'
      }
   ],
   otherState: 'anything',
   showPersion:false
  }
  // 函数直接定义在于render同级别,因为class类下,用this.函数名来访问
  switchNameHandLer = ( newName ) => {
    console.log("hello")
    // es6中this执行为当前类
    //this.state.persions[0].name = '渣渣渣渣辉' //不要直接去更改state Use setState()
    this.setState({
      persions: [
        {
          name: newName,
          count: '3000'
        },
        {
          name: 'aaa',
          count: '20'
        },
        {
          name: 'bbb',
          count: '10'
        },
        {
          name: 'ccc',
          count: '5'
        }
      ]
    })
  }  
  nameChangedHandLer = (event) => {
    console.log(event.target)
    this.setState({
      persions: [
        {
          name: event.target.value,
          count: '3000'
        },
        {
          name: 'aaa',
          count: '20'
        },
        {
          name: 'bbb',
          count: '10'
        },
        {
          name: 'ccc',
          count: '5'
        }
      ]
    })
  }
  togglePersonHandle = () =>{
    this.setState({
      showPersion: !this.state.showPersion
    })
  }
  render () {
    const style = {
      backgroundColor: 'red',
      border: '1px solid blue'
    }
    let persions = null;
    if (this.state.showPersion) {
      persions = (<div>
        <Persion
          name={this.state.persions[0].name}
          count={this.state.persions[0].count}
          changed={this.nameChangedHandLer}
        />
        <Persion
          name={this.state.persions[1].name}
          myclick={this.switchNameHandLer.bind(this, '渣渣辉2')}
          count={this.state.persions[1].count} />
        <Persion name={this.state.persions[2].name}
          count={this.state.persions[2].count} />
        <Persion name={this.state.persions[3].name}
          count={this.state.persions[3].count}>
          <a href='http://www.baidu.com'>非常感谢大家的支持</a>
        </Persion>
      </div>)
    }
    return (
      <div className="App">
        hello world
        {/* 函数不能加括号,加括号就直接执行了,使用箭头函数可以实现参数的传递 */}
        {/* <button onClick={() => this.switchNameHandLer('古天乐')}>更改状态值</button> */}
        {/* 第二种方式  bind 传递 (建议) */}
        {/* <button style={style} onClick={this.switchNameHandLer.bind(this, '古天乐')}>更改状态值</button> */}
        <button style={style} onClick={this.togglePersonHandle}>内容切换</button>
        {persions}
        {/* { this.state.showPersion ? 
          <div>
            <Persion
              name={this.state.persions[0].name}
              count={this.state.persions[0].count}
              changed={this.nameChangedHandLer}
            />
            <Persion
              name={this.state.persions[1].name}
              myclick={this.switchNameHandLer.bind(this, '渣渣辉2')}
              count={this.state.persions[1].count} />
            <Persion name={this.state.persions[2].name}
              count={this.state.persions[2].count} />
            <Persion name={this.state.persions[3].name}
              count={this.state.persions[3].count}>
              <a href='http://www.baidu.com'>非常感谢大家的支持</a>
            </Persion>
          </div> : null
        } */}
        
      </div>
    );
  }
}
export default  App;

 

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

初学react(七):if 判断 的相关文章

  • 使用输入更新 redux 状态

    如何从文本输入更新 redux 状态 我正在尝试用文本输入做一个非常简单的 Hello World 当有人在文本输入中输入内容时 它应该更新我商店的 searchTerm 值 我无法弄清楚这些事情 1 如何获取输入的值并将其传递到其 onC
  • 如何为 NextAuth.js 创建自定义 UI(使用 AWS Cognito)?

    是否可以为 AWS Cognito 提供自定义 UINextAuth js https next auth js org 当我使用 NextAuth js 调用 API 时 我看到这个 主观上丑陋的 屏幕 只有一个按钮可以将您重定向到真正的
  • 样式组件如何影响性能?

    使用样式组件是否比样式表更会降低 Web 应用程序的速度 如果我关心性能并且没有任何依赖于 props 的样式 我是否应该放弃样式组件并使用样式表 当您有很多小组件时 同时使用样式化组件渲染 性能开销可能会很有意义 绝对值得测试以删除小元素
  • 反应模式 shouldCloseOnOverlayClick 不起作用

    我正在使用反应模式 点击叠加层后模式不会关闭 我为 isOpen 和 onRequestClose 提供了属性 但模式保持打开状态 closeModal gt this setState modalIsOpen false
  • 将 redux 数据保存为 state 中的对象数组,如果 state 有先前的状态可用,则更新状态

    我收到的回复如下格式示例 const response data name abc age 10 id 10 name def age 15 id 20 name abc 我想将其保存在我的 redux 状态中 如果 response na
  • 处理 Redux 和 React 中错误的最佳实践

    我的 redux 操作中有一个异步函数 它在我的减速器中返回一个像这样的对象 user fetching false fetched false error null 所以基本上当我开始调用异步函数时我将 redux 状态更新为fetchi
  • addEventListener 通过映射调度来反应 redux

    我目前正在尝试将事件侦听器添加到我在反应中制作的应用程序 我通过连接到运行的 componentDidMount API 来做到这一点只有一次该组件已渲染 仅此而已 我的问题是我正在使用connect from react redux将我的
  • 错误找不到“pages”目录。请在项目根目录下创建一个”

    以前我的项目设置是 public next src pages components assets next config js 这工作正常 但我将结构更改为以下 public src client next config js jscon
  • 如何聚焦反应路由器链接

    我有一个用于搜索的输入框 并且希望能够按向下键将焦点从输入移动到列表的第一个s 看来我这里的东西不起作用 因为不是实际的 DOM 节点 我能够使用它来工作 a 代替 though let Link require react router
  • Menu.Item 中的 Antd 自动换行

    可以在 Menu Item 组件中应用自动换行吗 示例不起作用
  • 提及列表和表情符号顶部位置 (Draft.js)

    您能帮我如何将其位置从下到上更改吗 我想在文本顶部而不是底部显示提及列表 关于表情符号列表的同样问题 示例链接 https www draft js plugins com plugin emoji 你可以通过以下方式实现它position
  • 使用 jestjs 时模拟 sessionStorage

    好的 我有一个简单的示例 React 组件 它与会话存储 https developer mozilla org en US docs Web API Window sessionStorage App jsx var React requ
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • React - 如何在不使用构造函数的情况下访问道具

    注意 我在使用 React Native 时遇到了这个特定问题 但我想这也适用于 React 我有一个使用 React Component 构建的反应组件 我不需要设置状态 但我确实有道具 我建议的语法如下 class Header ext
  • 如何删除原生选项卡的边框

    我需要删除图像中标记的边框 我正在使用react native 和native base 选项卡 我需要删除选项卡的底部边框
  • Next.js 中的 .env.local 文件未正确设置

    当我创建一个 env local文件在我的项目根目录中 它设置不正确 在文件中 我有我的 API 密钥 如下所示 API KEY SOME API KEY 然后当我尝试访问它时获取服务器端属性 with 进程 env API KEY 它不起
  • 自定义rc-time-picker的样式

    我在用rc time picker我的项目的包 但我在自定义样式时遇到问题pop up of my time picker成分 这是我的组件的屏幕截图 首先 我需要更改时间的背景颜色item在当时li from light grey 在屏幕
  • 如何在故事书中注入窗口变量?

    我想添加一个 React 组件 称为ApplicationForm to a 故事书 https github com storybooks storybook 故事书是这样写的 import configureStore from sto
  • 如何在react-bootstrap中禁用表单提交的

    在下面的代码片段中 我有许多文本类型的输入表单 如果用户点击 我似乎会得到相同的合成事件 就像他们按下提交按钮一样 我想忽略作为表单提交 只允许一个人按下 提交 按钮 我删除了一些表单组以减少示例 在所有情况下 按钮或 ENTER 键 e

随机推荐

  • open build service打包deb,并浅谈一点

    详细打包步骤注意 https zh opensuse org openSUSE Build Service Debian builds 认识 浅谈如何认识open build service的 最近在研究软件打包分发和发布的相关知识 发现了
  • CSS 预处理工具 Less 的介绍及使用 步骤

    文章目录 Less是什么 Less的使用方法 Less 中的注释 Less 中的变量 Less 中的嵌套 Less 中的混合 Mixin Less 中的运算 Less 中的转译 Less 中的作用域 Less 中的导入 Less实用实例 文
  • zipkin接入mysql【windows】

    java jar zipkin jar 这种方式启动数据是保存在内存中的 下面我们配置一下将数据保存到mysql中 创建数据库 CREATE DATABASE zipkin 创建表结构 表结构内容参考以下连接 https github co
  • STM32CubeIDE设置Flash烧录地址和大小(告别Keil魔术棒)

    STM32CubeIDE中设置Flash烧写地址和范围 在由Keil平台转到STM32CubeIDE平台过程中 我们熟悉的点开魔术棒进行相关烧录配置的方式已经不适用了 在STM32CubeIDE平台中我们需要通过修改文件的方式来实现 稍显麻
  • sublime text3 python 代码提示_Sublime Text3+Anaconda插件实现智能提示python IDE

    导读 前言上期给你们介绍装Sublime Text3和Python环境 可以编写简单的python类库sublime text3 python 可是却不能像其它IDE一样智能提醒 这样用这个意义也就不大了 今天就给你们推荐python智能提
  • jeecg boot笔记(一)-使用模糊查询

    1 引入 JInput import JInput from components jeecg JInput vue 2 使用
  • NOIP2004 火星人(全排列)

    题目来源 http acm wust edu cn problem php id 1074 soj 0 题目描述 火星人共有N个手指 每个手指分别代表着1 N共N个数 可以通过改变这个这N个手指的顺序来改变值的大小 但是人类想要和火星人交流
  • docker安装 镜像检索、本地下载上传、重命名

    安装docker wget https mirrors aliyun com docker ce linux centos docker ce repo O etc yum repos d docker ce repo yum y inst
  • 基于GPRS的无线视频监控系统

    1 引言 目前 远程视频监控系统已经广泛应用于工矿企业生产现场监控 电信机房监控 城市交通管理等领域 常见的远程视频监控系统大多是通过架设专用的有线媒介 或者租用电信运营商的通信线路传输视频信号 前者工程工期长 前期投入比较大 传输距离有限
  • 学生成绩管理系统

    一个年级 相当链表A 该年级5个班 每个班5个人 相当于链表B1 B5 做一个学生成绩管理系统 include
  • C/C++操作文件

    1 C 给字符数组内文件名排序 假设我们获得到的文件名列表是一个二维字符数组 给这样的数据排序首先要获得排序所需的关键字 如下 void getNum char dstChar int num 首先要知道字符串长啥样 用字符串中的哪几个位置
  • cartographer 处理IMU(激光,里程计等)流程

    1 cartographer ros 入口文件 node main cc 入口函数main 如下图 ros init argc argv cartographer node ros start cartographer ros Scoped
  • hduoj 2014

    青年歌手大奖赛 评委会打分 Problem Description 青年歌手大奖赛中 评委会给参赛选手打分 选手得分规则为去掉一个最高分和一个最低分 然后计算平均得分 请编程输出某选手的得分 Input 输入数据有多组 每组占一行 每行的第
  • Android8.1 Settings中恢复出厂设置中添加一个清除数据的按钮

    1 packages apps Settings res layout master clear confirm xml b res layout master clear confirm xml
  • 【Ubuntu22使用过程问题记录】

    Ubuntu22 04 使用过程问题解决方案 1 系统基本设置 1 1 输入法 增加中文输入 1 Settings gt Region Language gt Manage Installed Languages gt 选中chinese
  • jmeter压测报错Non HTTP response code: java.net.ConnectException/Non HTTP response message: Connection ti

    最近在做性能测试过程中遇到了高并发时 后台监控各项指标都很正常 但是测试结果中很多Non HTTP response code java net SocketException Non HTTP response message Permi
  • 签名服务器调用接口

    package teste import java io UnsupportedEncodingException import java net URLEncoder import cn com infosec netsign agent
  • html前端技术开发,CSS标准文档流,建议收藏

    开始 我大学读的是大专 在学校学的是机电一体化 临近毕业的时候选择了学习web前端技术 因为做机电实在又累工资又低 而我更喜欢坐办公室的工作 有空调吹 我很现实 就是想多赚一点钱 到现在做了两年前端的小程序员 月薪是13K 经历过两次跳槽
  • GitLab WorkFlow

    在团队开发中 为了更好的协作 通常会采用一些工作流来最大程度提升效率 生产一个软件工序是比较复杂的 如果通过一个好的逻辑顺序去应用到一个软件开发的生命周期过程是非常重要的 GitLab WorkFlow 从构思到上线的十步 想法 每一个新建
  • 初学react(七):if 判断

    思路 先定义一个state里的一个状态 因为如果状态改变都会重新执行render 所以在render写上判断动态的赋值 也可以使用三目运算 import React from react import App css import Pers