[英]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.