因此,我试图创建一个todoList,并且希望在数组列表项为空时显示一个文本“ No todo to show”。

这是我的TodoList组件:

render() {

        const {items, clearList, handleDelete, handleEdit} = this.props;

        return (
            <ul className='list-group my-5'>
                <h3 className='text-capitalize text-center'>Todo List</h3>

                {

                items.map(item => {
                    return (
                        <TodoItem key={
                                item.id
                            }
                            title={
                                item.title
                            }
                            handleDelete={
                                () => handleDelete(item.id)
                            }
                            handleEdit={
                                () => handleEdit(item.id)
                            }/>
                    );
                })
            }
                <button type='button' className='btn btn-danger btn-block text-uppercase mt-5'
                    onClick={clearList}>Clear List</button>
            </ul>
        );

    }


这是我的TodoItem组件:

render() {
        const {title, handleDelete, handleEdit} = this.props;
        return (
            <li className='list-group-item text-capitalize d-flex justify-content-between my-2'>
                <h6>{title}</h6>
                <div className='todo-icon'>
                    <span className='mx-2 text-success'
                        onClick={handleEdit}>
                        <i className='fas fa-pen'/>
                    </span>

                    <span className='mx-2 text-danger'
                        onClick={handleDelete}>
                        <i className='fas fa-trash'/>
                    </span>
                </div>
            </li>
        )
    }


我尝试过的一件事是将其插入TodoItem组件中:

TodoItem.defaultProps = {
    title: 'Hello'
};


但是它没有用。

最佳答案

您可以使用三元运算符有条件地呈现jsx。

<ul className="list-group my-5">
  <h3 className="text-capitalize text-center">Todo List</h3>

  {items.length > 0 ? (
    items.map(item => {
      return (
        <React.Fragment>
          <TodoItem
            key={item.id}
            title={item.title}
            handleDelete={() => handleDelete(item.id)}
            handleEdit={() => handleEdit(item.id)}
          />
          <button
            type="button"
            className="btn btn-danger btn-block text-uppercase mt-5"
            onClick={clearList}
          >
            Clear List
          </button>
        </React.Fragment>
      );
    })
  ) : (
    <p>No todo to show</p>
  )}
</ul>

关于html - 如何在react中添加默认属性或值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57016001/

10-11 23:43