简体   繁体   English

如何在reactjs中使用条件渲染?

[英]How to use conditional rendering in reactjs?

I have the following react component which creates a list of Tasks. 我有以下React组件,可创建任务列表。

The code works ok this.props.data and when the data is empty, no Task appears. 该代码可以在this.props.data正常this.props.data并且当数据为空时,不会显示任何任务。

I would like to change the code in a way so that if the array is empty a single text 我想以某种方式更改代码,以便在数组为空的情况下输入单个文本

"list empty" “列出为空”

is displayed instead. 而是显示。

I have tried to create a function for listItems and inside add some logic, but I cannot call it from JXS, example <div>{listItems()}</div> although I am not even sure if this is the correct approach. 我试图为listItems创建一个函数并在其中添加一些逻辑,但是我无法从JXS调用它,例如<div>{listItems()}</div>尽管我什至不确定这是否是正确的方法。

Any ideas? 有任何想法吗?

import React, { Component } from 'react';
import Task from './Task.js'

class TasksList extends Component {
   constructor(props) {
       super(props);
   }
   render() {
       const data = this.props.data;
       const listItems = data.map(todo => {
           return <Task
               id={todo.id}
               key={todo.id.toString()}
               title={todo.title}
               onTitleChange={this.props.onTitleChange}
               onTaskDelete={this.props.onTaskDelete}
           />
       });
       return (
           <div>{listItems}</div>
       )
   }
}

export default TasksList;

这应该工作:

const listItems = data.length == 0 ? "List empty" : data.map(todo => { ... });

You can use something like below, hope this helps. 您可以使用类似下面的内容,希望对您有所帮助。

class TasksList extends Component {
   constructor(props) {
       super(props);
   }
   render() {

       if(this.props.data.length > 0) {
         return (<div>
           {data.map(todo => {
           return <Task
               id={todo.id}
               key={todo.id.toString()}
               title={todo.title}
               onTitleChange={this.props.onTitleChange}
               onTaskDelete={this.props.onTaskDelete}
           />
         });}
       </div>);
       }
       return (
           <div>list empty</div>
       )
   }
}

export default TasksList;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM