Как я могу добавить в компонент смешанный элемент?

<GuideTable
  description = {['Query parameters for ', <code>/oauth/authorize</code>, ' in the authorization code grant']} />

Как мне лучше очистить этот код, чтобы мне не нужно было экранировать <code>/oauth/authorize</code> в смешанном массиве?

Я попытался избежать этого с помощью синтаксиса {``}, но предоставив свойство description, поскольку {`Query parameters for ${<code>/oauth/authorize</code>} in the authorization code grant`} просто отображается как «Параметры запроса для [object Object] в предоставлении кода авторизации».

Любые идеи?

Так что именно вы хотите вывести?

Gabriele Petrioli 26.10.2018 23:38

@GabrielePetrioli Я хочу, чтобы элемент кода в предложении отображался как элемент кода.

Jon Ursenbach 26.10.2018 23:41

Итак, как вы визуализируете свойство description внутри GuideTable?

Gabriele Petrioli 26.10.2018 23:55
{this.props.description}
Jon Ursenbach 26.10.2018 23:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
2
4
194
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Это тот результат, которого вы искали?

const App = () => (
  <GuideTable
    description = {['Query parameters for ', <code>/oauth/authorize</code>, ' in the authorization code grant']}
  />
);

const GuideTable = ({description}) => (
  description.map((item, i) => <React.Fragment key = {i}>{item}</React.Fragment>)
);

ReactDOM.render(<App />, document.getElementById("app"));
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.0/umd/react.development.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.0/umd/react-dom.development.js"></script>
<div id = "app"></div>

Это отобразит два текстовых узла в DOM и элемент <code>. Побег не нужен.

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

Jon Ursenbach 27.10.2018 00:00
Ответ принят как подходящий

Это один способ:

const GuideTable = (props) => {
    return (<div>
        {props.description}
        <div>My other stuff in Guide Table</div>
    </div>);
};
<GuideTable description = {<>Query parameters for <code>/oauth/authorize</code> in the authorization code grant</>}/>

Это переходит во фрагмент для описания.

О, как интересно, я понятия не имел о фрагментах. У нас все еще версия 15.6. *, Но мы хотели немного обновить ее. Это будет отлично работать. Спасибо!

Jon Ursenbach 27.10.2018 00:12

Вы также можете использовать свойство опасноSetInnerHTML, которое является заменой реакции для innerHTML.

const App = () => (
  <GuideTable
    description='Query parameters for <code>/oauth/authorize</code>, in the authorization code grant' />
);

const GuideTable = ({description}) => (
  <div dangerouslySetInnerHTML = {{__html:description}}></div>
);

ReactDOM.render(<App />, document.getElementById("app"));
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.0/umd/react.development.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.0/umd/react-dom.development.js"></script>
<div id = "app"></div>

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