Reactjs, Создать элемент JSX из массива, используя карту - PullRequest
0 голосов
/ 11 апреля 2020

Я имею дело с тем, как создать элемент JSX внутри возврата компонента React, используя карту. Я пытаюсь создать динамическую c форму, а источником является заданный массив:

У меня есть два типа форм, а ключ "tipo" - это условие

Массив с данными:

let data = [
  { tipo: "input",
    label: "label1",
    name: "name1",
    placeholder: "placeholder1",
    defaultValue: "defaulvalue1",
  },
  { tipo: "datepiker",
    label: "label2",
    name: "name2",
    placeholder: "placeholder2",
    defaultValue: "defaulvalue2",
  },

];

Стандартный код по умолчанию: (тип формы: ввод).

        <FormItem label="labe1">
          <Input name="name1" placeholder="placeholder1" defaultValue=defaultvalue1 />
        </FormItem>

Если у нас есть условие datepike, мы просто заменим на:

<DatePicker name="name"  defaultValue={moment("defaultvalue1")} />

Esto es un inteto incompleto:

        <div>
          {data.map((value) => (
            <Fragment>
            <FormItem label={value.label}>

              *** condition *** if input or datepike

           </FormItem>
           </Fragment>


          ))}
        </div>

Есть идеи о том, как это сделать sh this?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2020

Вы можете использовать тенарную операцию:

<div>
      {data.map((value) => (
        <Fragment>
        <FormItem label={value.label}>

          {value.tipo === "input" ? <Input name="name1" /> : <DatePicker name="name"/>}


       </FormItem>
       </Fragment>


      ))}
</div>
0 голосов
/ 11 апреля 2020

Вы можете добавить условие && в tipo и соответственно отобразить.

<div>
  {data.map(({ label, tipo, name, defaultValue, placeholder }) => (
    <Fragment>
      <FormItem label={label}>
        {tipo === "input" && (
          <Input
            name={name}
            placeholder={placeholder}
            defaultValue={defaultvalue}
          />
        )}
        {tipo === "datepiker" && (
          <DatePicker name={name} defaultValue={moment(defaultValue)} />
        )}
      </FormItem>
    </Fragment>
  ))}
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...