#javascript #reactjs #react-redux
Вопрос:
Я хотел бы условно отобразить компонент на основе свойства заголовка моей константы. В основном, если заголовок Woffy —gt; Render Component1, это мой код:
import React from 'react'; import Component1 from '../Collection/Component1'; import Component2 from '../Collection/Component2'; const pets = [ { header: 'Woffy', image: '/img/dog.png' }, { header: 'kitty', image: '/img/cat.png' }, class demo class extends React.Component{ render(){ return( lt;divgt; {header === "Woofy" amp;amp; lt;Component1 /gt;} {header === "kitty" amp;amp; lt;Component2 /gt;} lt;/divgt; ) } }
Комментарии:
1. С каким элементом индекса массива вы хотите сравнить заголовок ?
2. Ну, у меня есть раскрывающийся компонент react lt;Выпадающий список/gt; из пользовательского интерфейса Fluent, я хочу отобразить компонент, основанный на выборе раскрывающегося списка, который я хочу указать в свойстве заголовка. возможно ли это ? Это мой выпадающий список lt;Выпадающие элементы={домашние животные} заполнитель=»Мир зоопарка» /gt;
3. Да, вы можете добиться этого, см. Мой обновленный ответ.
Ответ №1:
Ну, у меня есть раскрывающийся компонент react
lt;Dropdown/gt;
из пользовательского интерфейса Fluent, я хочу отобразить компонент, основанный на выборе раскрывающегося списка, который я хочу указать в свойстве заголовка. возможно ли это ? Это мой выпадающий списокlt;Dropdown items={pets} placeholder="Zoo world" /gt;
Вы можете использовать переменную, в которой вы находитесь в value
состоянии выпадающего списка, а затем сравнить переменную для визуализации компонента.
import React from "react"; import { Dropdown } from "@fluentui/react-northstar"; const pets = [ { key: "1", header: "Woffy", image: "/img/dog.png" }, { key: "2", header: "kitty", image: "/img/cat.png" } ]; const DropdownExample = () =gt; { const [dropdownValue, setDropdownValue] = React.useState("3"); console.log(dropdownValue); return ( lt;Dropdown items={pets} value={dropdownValue} onChange={(_, data) =gt; setDropdownValue(data.value.header)} /gt; ); };
Теперь сравните эту dropdownValue
переменную с компонентом рендеринга.
lt;divgt; {dropdownValue === "Woofy" amp;amp; lt;Component1 /gt;} {dropdownValue === "kitty" amp;amp; lt;Component2 /gt;} lt;/divgt;
Комментарии:
1. Это решает вопрос, я просто добавил раскрывающийся пример экспорта по умолчанию; чтобы экспортировать свой компонент на страницу рендеринга. С вашей помощью я узнал, что компоненты классов в React не поддерживают хуки, но я могу смешивать компоненты классов и функций 🙂 Ты потрясающая
Ответ №2:
Вы можете проверить header
значение с помощью Array.map
метода, а затем вернуть желаемый результат.
lt;divgt; {pets.map((e) =gt; { if (e.header === "Woffy") { return lt;Component1 /gt;; } else if (e.header === "kitty") { return lt;Component2 /gt;; } else { return null; } })} lt;/divgt;;