Как отобразить тип if..else if...else в функциональном компоненте React?

Я использую хуки React, и ниже приведен условный рендеринг, которого я хочу добиться, где sortDirection — это состояние. Я хочу отобразить один из тегов <i> на основе sortDirection. Как я могу этого добиться?

    if (sortDirection == "ascending") {
        return <i onclick = {() => setSortDirection('descending')} className = "fa fa-arrow-down" />
    } else if (sortDirection == "descending") {
        return <i onClick = {() => setSortDirection('random')} className = "fa fa-arrow-up" />
    } else {
        return <i onClick = {() => setSortDirection('ascending')} className = "fa fa-arrow-h" />
    }

Хуки React не меняют ничего, что можно было бы применить к коду, который вы показываете. Этот код не будет отличаться для функционального компонента.

Ryan Cogswell 08.03.2019 16:50

Можете ли вы объяснить свой вопрос немного больше? То, что вы сделали, кажется, уже отвечает на ваш вопрос, если только я вас не понимаю?

Tom Finney 08.03.2019 16:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
2 301
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете просто создать отдельный функциональный компонент и иметь условие в качестве реквизита

const MyIComponent = (sortDirection) => {
  if (sortDirection == "ascending") {
        return <i onclick = {() => setSortDirection('descending')} className = "fa fa-arrow-down" />
    } else if (sortDirection == "descending") {
        return <i onClick = {() => setSortDirection('random')} className = "fa fa-arrow-up" />  }

    return <i onClick = {() => setSortDirection('ascending')} className = "fa fa-arrow-h" />
}

const MainComponent = () => <myIComponent sortDirection = {sortDirection} />

Вместо того, чтобы создавать отдельный компонент, я просто создал const DirectionIcon = {вышеупомянутый условный рендеринг} и взамен написал <DirectionIcon /> . Поскольку в вашем комментарии вы определили myIComponent, я думаю, что первая буква должна быть заглавной, чтобы реагировать, чтобы распознать ее как компонент React. Не считая того, что все прошло хорошо. Спасибо.

rockfight 08.03.2019 16:56
const MyIComponent = ({sortDirection, iClassName}) => {
  return <i onclick = {() => setSortDirection(sortDirection)} className = {iClassName} />
}

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

const myIComponent = ({sortDirection, iClassName}) => { return <i onclick = {() => setSortDirection(sortDirection)} className = {iClassName} /> }

Avick Mukherjee 08.03.2019 17:08

Другие вопросы по теме