не может использовать if / else внутри метода render render - PullRequest
0 голосов
/ 10 ноября 2019

Я использую React с Ant Design, но это всего лишь проблема с реакцией.

У меня есть такой код:

  {
    title: "Group",
    dataIndex: "group",
    key: "group",
    render: text => (
     <a> {text} </a>
    )
  }

Не render: text => (), который позволяет мне использовать html внутри функции js (или jsx?)

, но,если я пытаюсь поставить логику if / else, я всегда получаю ошибку.

Прямо сейчас я использую что-то глупое, как это:

render: texts => (
  <span>
     {[""].map(text => {
      if(texts.includes(":")) {
       return (<b> {texts} </b>)
      }
    return (<a> {texts} </a>)
  })}
</span>

Вопрос в том, есть ли способ сделать это без использования [""].map() и почему не будет просто, если / иначеработа

Ответы [ 2 ]

3 голосов
/ 10 ноября 2019

Вы не можете использовать if/else внутри JSX, но вы можете использовать троичное выражение внутри JSX или условие if/else внутри вашей функции перед возвратом некоторого JSX. Вот пример обоих:

    {

      render: texts => (
        <span>
          { 
            texts.includes(":")
              ? <b> {texts} </b>
              : <a> {texts} </a>
          }
        </span>
      ),

      otherRender: texts => {
        if (texts.includes(":")) {
          return (
            <span><b> {texts} </b></span>
          )
        }
        return (
          <span><a> {texts} </a></span>
        )
      }

    }
2 голосов
/ 10 ноября 2019

Почему это невозможно:

Эквивалентное выражение, использующее условный оператор для замены if:

render: texts => (
  <span>
     {texts.includes(":")
       ? <b>{texts}</b>
       : <a>{texts}</a>
     }
  </span>
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...