React条件渲染

条件渲染可以将一个数组内的所有数据依次展示在界面上,常用场景:文字列表、商品列表。React 中的条件渲染就和在 JavaScript 中的条件语句一样。使用 JavaScript 操作符如 if 或者 条件操作符 来创建渲染当前状态的元素,并且让 React 更新匹配的 UI

先来看两个组件:

function UserGreeting(props) {
 return 

欢迎回来!

; } function GuestGreeting(props) {  return 

请先注册。

; }

我们将创建一个 Greeting 组件,它会根据用户是否登录来显示其中之一:

React 实例

function Greeting(props) {
 const isLoggedIn = props.isLoggedIn;
 if (isLoggedIn) {
   return 
  ;
 }
 return 
  ;
}

ReactDOM.render(
 // 尝试修改 isLoggedIn={true}:
 
  
   false} />,  document.getElementById(
   'example') ); 
  

元素变量

你可以使用变量来储存元素。它可以帮助你有条件的渲染组件的一部分,而输出的其他部分不会更改。 在下面的例子中,我们将要创建一个名为 LoginControl 的有状态的组件。 它会根据当前的状态来渲染 或 ,它也将渲染前面例子中的 。

React 实例

class LoginControl extends React.Component {
 constructor(props) {
   super(props);
   this.handleLoginClick = this.handleLoginClick.bind(this);
   this.handleLogoutClick = this.handleLogoutClick.bind(this);
   this.state = {isLoggedIn: false};
 }

 handleLoginClick() {
   this.setState({isLoggedIn: true});
 }

 handleLogoutClick() {
   this.setState({isLoggedIn: false});
 }

 render() {
   const isLoggedIn = this.state.isLoggedIn;

   let button = null;
   if (isLoggedIn) {
     button = 
  ;
   } else {
     button = 
  ;
   }

   return (
     
  
           
           {button}      
  
   );
 }
}

ReactDOM.render(
 
  ,
 document.getElementById('example')
);

与运算符 &&

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

React 实例

function Mailbox(props) {
 const unreadMessages = props.unreadMessages;
 return (
   
  
         
   

Hello!

     {unreadMessages.length > 0 &&        

         您有 {unreadMessages.length} 条未读信息。        

     }      ); } const messages = ['React''Re: React''Re:Re: React']; ReactDOM.render(   ,  document.getElementById('example') );

在 JavaScript 中,true && expression 总是返回 expression,而 false && expression 总是返回 false。 因此,如果条件是 true,&& 右侧的元素就会被渲染,如果是 false,React 会忽略并跳过它。

三目运算符

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

condition ? true : false

在下面的例子中,我们用它来有条件的渲染一小段文本。

render() { const isLoggedIn = this.state.isLoggedIn; return (
The user is {isLoggedIn ? 'currently' : 'not'} logged in.
); }

同样它也可以用在较大的表达式中,虽然不太直观:

render() {
 const isLoggedIn = this.state.isLoggedIn;
 return (
   
  
         {isLoggedIn ? (        
         ) : (        
         )}    
  
 );
}

阻止组件渲染

在极少数情况下,你可能希望隐藏组件,即使它被其他组件渲染。让 render 方法返回 null 而不是它的渲染结果即可实现。 在下面的例子中, 根据属性 warn 的值条件渲染。如果 warn 的值是 false,则组件不会渲染:

React 实例

function WarningBanner(props) {
 if (!props.warn) {
   return null;
 }

 return (
   
  
   "warning">      警告!    
  
 );
}

class Page extends React.Component {
 constructor(props) {
   super(props);
   this.state = {showWarning: true}
   this.handleToggleClick = this.handleToggleClick.bind(this);
 }

 handleToggleClick() {
   this.setState(prevState => ({
     showWarning: !prevState.showWarning
   }));
 }

 render() {
   return (
     
  
           
           
             {this.state.showWarning ? '隐藏' : '显示'}              
  
   );
 }
}

ReactDOM.render(
 
  ,
 document.getElementById('example')
);

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

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/223001.html<

(0)
运维的头像运维
上一篇2025-04-15 18:29
下一篇 2025-04-15 18:30

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注