React 条件渲染简单演示

模拟根据登录情况判断要显示的欢迎界面

import React, { Component } from ‘react‘;
import ReactDOM from ‘react-dom‘;
import ‘./index.css‘;
import App from ‘./App‘;
import * as serviceWorker from ‘./serviceWorker‘;
import PropTypes from ‘prop-types‘;

function Greeting(props){
  const state=props.state;

  if(state){
    return <UserGreeting />
  }else{
    return <GuestGreeting />
  }
}

function UserGreeting(){
  return (
    <div>欢迎用户</div>
  )
}

function GuestGreeting(){
  return (
    <div>欢迎游客</div>
  )
}

  ReactDOM.render(
    <div>
      <Greeting state={false} />
    </div>,
    document.getElementById(‘example‘)
  );

serviceWorker.unregister();

元素变量,可以使用变量来储存元素

import React, { Component } from ‘react‘;
import ReactDOM from ‘react-dom‘;
import ‘./index.css‘;
import App from ‘./App‘;
import * as serviceWorker from ‘./serviceWorker‘;
import PropTypes from ‘prop-types‘;

class Logincontrol extends React.Component{
  constructor(props){
    super(props);
    this.LogoutHandler=this.LogoutHandler.bind(this);
    this.LoginHandler=this.LoginHandler.bind(this);
    this.state={
      loginState:false
    }
  }

  LogoutHandler(){
    this.setState({
      loginState:false
    })
  }

  LoginHandler(){
    this.setState({
      loginState:true
    })
  }

  render(){
    const loginState=this.state.loginState;
    let button=null;
    if(loginState){//如果是登录状态
      button=<LogoutBtn onClick={this.LogoutHandler}/>
    }else{
      button=<LoginBtn onClick={this.LoginHandler}/>
    }

    return(
      <div>
        <p>登录状态:{this.state.loginState?‘已登录‘:‘未登录‘}</p>
        {button}
      </div>
    )
  }
}

function LogoutBtn(props){
  return(
    <button onClick={props.onClick}>退出登录</button>
  )
}

function LoginBtn(props){
  return(
    <button onClick={props.onClick}>点击登录</button>
  )
}

  ReactDOM.render(
    <div>
      <Logincontrol />
    </div>,
    document.getElementById(‘example‘)
  );

serviceWorker.unregister();

可以通过用花括号包裹代码在 JSX 中嵌入任何表达式 ,也包括 JavaScript 的逻辑与 &&,它可以方便地条件渲染一个元素

import React, { Component } from ‘react‘;
import ReactDOM from ‘react-dom‘;
import ‘./index.css‘;
import App from ‘./App‘;
import * as serviceWorker from ‘./serviceWorker‘;
import PropTypes from ‘prop-types‘;

function Mail(props){
  const msg=props.msg;
  return(
    <div>
    {
      msg.length>0 &&
      <p>共有{msg.length}条未读消息</p>
    }
    </div>
  )
}

const msg=[
  ‘下午有空吗?‘,
  ‘明天有空吗?‘
];

  ReactDOM.render(
    <div>
      <Mail msg={msg}/>
    </div>,
    document.getElementById(‘example‘)
  );

serviceWorker.unregister();

三目运算符
条件渲染的另一种方法是使用 JavaScript 的条件运算符

刚才的判断登录条件,可以修改为:

阻止组件渲染
让 render 方法返回 null 即可实现

组件的 render 方法返回 null 并不会影响该组件生命周期方法的回调。
例如,componentWillUpdate 和 componentDidUpdate 依然可以被调用

import React, { Component } from ‘react‘;
import ReactDOM from ‘react-dom‘;
import ‘./index.css‘;
import App from ‘./App‘;
import * as serviceWorker from ‘./serviceWorker‘;
import PropTypes from ‘prop-types‘;

class ShowWarning extends React.Component{
  constructor(props){
    super(props);
    this.showHide=this.showHide.bind(this);
    this.state={
      warningState:true
    }
  }

  showHide(){
    this.setState(prevState=>({
      warningState:!prevState.warningState
    }))
  }

  hideHandler(){
    this.setState({
      warningState:false
    })
  }

  render(){

    return(
      <div>
        <WarnBanner warn={this.state.warningState}/>
        <button onClick={this.showHide}>
          {this.state.warningState?‘隐藏‘:‘显示‘}
        </button>
      </div>
    )
  }
}

function WarnBanner(props){
  if(!props.warn){
    return null
  }else{
    return(
      <div>警告警告!!!</div>
    )
  }
}

  ReactDOM.render(
    <div>
      <ShowWarning />
    </div>,
    document.getElementById(‘example‘)
  );

serviceWorker.unregister();

setState() 可以接收一个函数,这个函数接受两个参数
第一个参数表示上一个状态值,第二参数表示当前的 props

this.setState((prevState, props) => ({
    //do something here
}));

原文地址:https://www.cnblogs.com/chenyingying0/p/12692194.html

时间: 2024-10-11 19:38:12

React 条件渲染简单演示的相关文章

2017.11.7 ant design - upload 组件的使用, react 条件渲染以及 axios.all() 的使用

一.主要任务:悉尼小程序管理后台,添加景点页面的开发 二.所遇问题及解决 1. 上传多个不同分类音频信息时,如中文音频和英文音频,要求音频不是放在一个数组中的,每个音频是一个独立的字段,此时: <Upload action="/hserve/v2/file/upload/" // 必选参数,上传的地址: listType="picture" // 上传列表的内建样式,这个不是很明白 text.picture.picture-card 之间的区别,默认值为 te

前端React 条件渲染

React 条件渲染 在 React 中,你可以创建不同的组件来封装各种你需要的行为.然后还可以根据应用的状态变化只渲染其中的一部分. React 中的条件渲染和 JavaScript 中的一致,使用 JavaScript 操作符 if 或条件运算符来创建表示当前状态的元素,然后让 React 根据它们来更新 UI. 先来看两个组件: function UserGreeting(props) { return <h1>欢迎回来!</h1>; } function GuestGree

React——条件渲染

在React中,你可以创建各种不同的组件,然后根据应用的状态渲染出它们其中的一般部分. 一.用变量存储元素 可以将元素保存到一个变量中,通过为变量赋不同的值去渲染不同的元素 function LoginButton(props){ return <button onClick={props.handleClick}>Login</button> } function LogoutButton(props){ return <button onClick={props.hand

React组件的简单演示

src/Test.js import React from 'react'; function Test() { return ( <div> test </div> ); } export default Test; src/index.js中引入组件Test 页面中效果 原文地址:https://www.cnblogs.com/chenyingying0/p/12685470.html

详解React 的几种条件渲染以及选择

对于一个展示页面来讲, 通常有好几种展示状态(以列表页为例): 数据为空, 空页面 取数据时发生错误, 错误页面 数据正常 加载状态 针对以上三种情况, react渲染列表的时候要正确判断并渲染出相应的视图, 也就是条件渲染. 不同于vue的v-if, v-show等框架提供的api, react的条件渲染都是js原生的再加上一点点的hack. 比如react文档提到的. if/else, && 和三目等等. 当然上面的都是常用的一些方法, 但是也存在着各种问题, 比如条件分支过多的的事时

React学习:条件渲染

在react中的条件渲染和Vue不一样,react使用的是:使用不同的组件进行封装,然后根据使用的场景再来判断使用哪一个组件 React中的条件渲染和js中的一样,使用js或者其他条件运算符进行不同组件的渲染 1.元素变量 可以使用变量来储存元素. 它可以帮助你有条件地渲染组件的一部分,而其他的渲染部分并不会因此而改变. //元素变量 function LoginButton(props) { return ( <button onClick={props.onClick}> Login &l

React官方文档学习记录(四)- 条件渲染

一点点记录,建议需要学习React的移步官方文档去学习. 在React中,你可以创建一个清晰(distinct)的组件来简要描述你现在需要的东西.然后,你只需要使用你应用中的state来渲染它们. React中的条件型渲染跟JavaScript中的条件运算符运行方式差不多.好像就是使用JavaScript中的if或者三元运算符创建元素来显示现在的状态,然后让React更新UI来匹配这些修改. 下面这个例子就是根据不同的isLoggedIn进行不同的欢迎. 1 2 3 4 5 6 7 8 9 10

React中条件渲染和循环

条件渲染 React 中的条件渲染和 JavaScript 中的一样,使用 JavaScript 运算符 if 或者条件运算符去创建元素来表现当前的状态,然后让 React 根据它们来更新 UI. 具体实现可以看下面的例子 1.在 src -> components 文件夹中,再新建 list.js ,具体代码如下: import React, { Component } from 'react'; class List extends Component { // 状态的初始化一般放在构造器中

React中条件渲染

17==> 条件渲染 state初始化一般写在构造器当中 CharShop.js如下 import React, { Component } from "react"; export default class CharShop extends Component { // state初始化一般写在构造器当中 constructor(props){ super(props); this.state={ goods: [{ id: 1, text: "web111&quo