初学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 判断 的相关文章

  • 如何判断何时创建新组件?

    我一直在寻找背后的逻辑当有人在 AngularJS Angular 上的 Web 应用程序中创建新组件时但我认为这更通用 可能适用于所有基于组件的前端框架 我知道有像这样的一些原则应该是抽象的和可重用的但例如我在角度文档中看到 每个单独的路
  • 如何使用 Coffeescript 在 React 中渲染 HTML 标签?

    我目前正在学习 ReactJS 以及如何使用 Ruby on Rails 作为其后端 所以如果我做出愚蠢的假设 我深表歉意 请随意责骂我 我正在关注一个教程 其中作者使用 Coffeescript 而不是 ES6 来处理他的 ReactJS
  • JSX 元素类型“Element[]”不是 JSX 元素的构造函数?

    types react 16 7 17 types react dom 16 0 11 打字稿 3 2 2 function ArryElement return div 1 div div 2 div function App retur
  • 带换行符的 React/Momentjs 日期格式

    我有一个日期字符串 我想对其进行格式化 其中数字位于月份下 Jul 6 我尝试了几种不同的方法来添加新行
  • 为什么我的反应路由器链接将我带到页面中间?

    我的网站上有很多链接 但只有一个可以执行此操作 它没有将我带到导航栏的顶部 而是转到内容的中间 知道为什么会这样吗 这是一个页面 其中有一个 map经历一些JSON 这是渲染div页面下方的文本元素 如果重要的话 这是一些可能相关的代码 路
  • 使用 ref 触发反应 dropzone 不起作用

    我正在实现这个库 https github com felixrieseberg React Dropzone Component https github com felixrieseberg React Dropzone Compone
  • 没有 Props 的 TypeScript React State

    我想利用 TypeScript 中的静态和强类型 但仅限于状态 因为我不打算采用任何道具 当我尝试传递接口时 最终出现错误 import as React from react import Link from react router d
  • 从旧的外部 Javascript 更改 React 组件的状态?

    如何从旧的 jQuery soup 中更改 React 组件的状态 代码 我有一个这样的组件 var AComponent React createClass getInitialState function return ids rend
  • 使用代理时,React 应用程序正在不同位置查找静态文件

    我用过npx create react app my app创建一个反应应用程序 我用过的npm run build构建应用程序并使用它进行部署serve s build 我正在使用代理服务器来公开我的应用程序 我的 httpd 配置如下所
  • ReactCSSTransitionGroup 组件WillLeave 未调用

    我尝试使用 ReactCssTransition 但不知何故该事件没有被调用 componentWillLeave 这是我的组件 import React Component from react import TransitionGrou
  • ReactJs 警告:不推荐使用改变“style”。考虑事先克隆它

    我收到以下警告 inWarning div was passed a style object that has previously been mutated Mutating style is deprecated Consider c
  • p5 向量减法“sub”返回错误

    我一直在尝试将 p5 草图上传到 React 构建中 使用react p5 wrapper 我能够成功在屏幕上渲染画布 但是 某些矢量函数会导致错误 var distance this position dist ball position
  • 打字稿 - 字符串'不可分配给类型'FC

    我收到以下错误 Type props PropsWithChildren lt amount number gt gt string is not assignable to type FC lt amount number gt Type
  • 如何让孩子做出反应

    我正在尝试做我自己的Tabs组件 以便我可以在我的应用程序中使用选项卡 然而 我似乎在尝试按类型提取我需要的子组件时遇到问题 import React from react export class Tabs extends React C
  • useLocation 挂钩 - 确定过去的位置

    根据 React Router 5 1文档 https v5 reactrouter com web api location应该可以看到 应用程序现在在哪里 你想让它去哪里 甚至它曾经在哪里 在我的应用程序中 我需要查看 它在哪里 我访问
  • 有没有办法让 React 为孩子自动定义“键”?

    我正在学习 React 我偶然发现了 动态儿童 的这个怪癖 带有代码示例的序言 Render Pass 1
  • iOS 11 浏览器图像错误

    在 iOS 11 中滚动页面时出现以下错误 在 Firefox Safari 和 Chrome 中 在 Android 设备中 不会发生该错误 这些是背景图像 我不知道这是否是导致错误的原因 图 2 显示了图像在 Android 中的用途和
  • 使react-leaflet能够离线使用

    我一直在使用反应传单 https github com PaulLeCam react leaflet图书馆 到目前为止运作良好 现在我希望网站预加载尽可能多的图块 以便网络应用程序 也是 PWA 可以在没有互联网的情况下使用 我找到了一些
  • 在vscode中使用reactjs报错

    在 Visual Studio 代码中使用 jsx 语法 Visual Studio代码报错 请帮我 谢谢 符号 例如 而不是这样做 return lt button className square gt TODO lt button g
  • React Native - 跨屏幕传递数据

    我遇到了一些麻烦react native应用程序 我不知道如何跨屏幕传递数据 我意识到还有其他类似的问题在 SO 上得到了回答 但是这些解决方案对我来说不起作用 我正在使用StackNavigator 这是我的设置App js file 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