如果child为null,则隐藏整个父元素React

时间:2019-09-06 06:56:46

标签: reactjs jsx

我是React的新手,如果孩子有null,li数据通过props传递,我想隐藏父div

import React from 'react';

const PublicationTags = (props) => {
    return (
        <div className="publication-tags">
            <h4>Темы публикации</h4>
            <ul>
                {props.data &&
                    props.data.tag_names &&
                    props.data.tag_names.map((tag_name, key) => (
                        <li key={key}>
                            <a href="/">{tag_name}</a>
                        </li>
                    ))}
            </ul>
        </div>
    );
};

export default PublicationTags;

如果没有关于li项的数据,我想隐藏和标签。

2 个答案:

答案 0 :(得分:0)

<ParentDiv style={this.props.data===null ? {display:'none'}:{display:'flex'}>{this.props.data}</ParentDiv>

希望这会有所帮助。

答案 1 :(得分:0)

取决于应用程序的整体结构,但您可以执行以下操作:

import React from 'react';

const PublicationTags = props => {
  if (!props.data.length) {
    return null;
  }

  return (
    <div className="publication-tags">
      <h4>Темы публикации</h4>
      <ul>
        {props.data &&
          props.data.tag_names &&
          props.data.tag_names.map((tag_name, key) => (
            <li key={key}>
              <a href="/">{tag_name}</a>
            </li>
          ))}
      </ul>
    </div>
  );
};

export default PublicationTags;

或:

import React from 'react';

const PublicationTags = props => {
  return props.data.length ? (
    <div className="publication-tags">
      <h4>Темы публикации</h4>
      <ul>
        {props.data &&
          props.data.tag_names &&
          props.data.tag_names.map((tag_name, key) => (
            <li key={key}>
              <a href="/">{tag_name}</a>
            </li>
          ))}
      </ul>
    </div>
  ) : null;
};

export default PublicationTags;