Как визуализировать jsx на основе условий с помощью react и typescript?

#reactjs #typescript

Вопрос:

у меня есть код, как показано ниже,

 const ParentComponent = ({data}: {data: Array<DataType>}) => {
    const version = data.version; //version is an array
    const type = data.type; //type is an object
    const renderContent = () => {
        return (
            <Flex flexDirection="column">
                <div>version</div> //this to be displayed if version not empty
                <div>{version}</div> // this to be displayed if version is not empty
                <div>type</div> //this to be shown if type has name or version
                <div>{type.name} {type.number}</div> //this to be shown if type has 
                // name or version 
            </Flex>
        ); 
    }

    return(
        <>
            <Flex>
                <div>
                    <input type="checkbox" /> 
                </div>
            </Flex>
            <Icon name="help" /> //this to be displayed only when version is not 
            //empty array or type has name or number
        </>
    );
}
 

приведенный выше код работает нормально. но я хочу отображать значок только тогда, когда версия не является пустым массивом или тип имеет имя или номер

и в rendercontent должен отображаться div с версией, если версия не пуста, и div с типом, который должен отображаться, если у типа есть имя или версия.

как я могу это сделать, может ли кто — нибудь помочь мне в этом. я новичок в программировании и обучаюсь на ходу. Спасибо.

Комментарии:

1. Используйте условный рендеринг. Подробнее об этом читайте здесь .

Ответ №1:

Вы можете сделать это просто путем условного рендеринга

 const ParentComponent = ({data}: {data: Array<DataType>}) => {
    const version = data.version; //version is an array
    const type = data.type; //type is an object
    const renderContent = () => {
        return (
            <Flex flexDirection="column">
                {version amp;amp; version.length ?  (
                    <>
                      <div>version</div> //this to be displayed if version not empty
                      <div>{version}</div> // this to be displayed if version is not empty
                    </>
                 ) : null}
                  {(type.version || type.name) ? (
                     <>
                     <div>type</div> //this to be shown if type has name or version
                     <div>{type.name} {type.number}</div> //this to be shown if type has 
                // name or version 
                    </>
                  ) : null}
          
            </Flex>
        ); 
    }

    return(
        <>
            <Flex>
                <div>
                    <input type="checkbox" /> 
                </div>
            </Flex>
             {version amp;amp; version.length ? (
               <Icon name="help" /> //this to be displayed only when version is not 
            //empty array or type has name or number
             )}
            
        </>
    );
}