【问题标题】:Reactjs, Generate JSX element from array using mapReactjs,使用映射从数组生成 JSX 元素
【发布时间】:2020-07-23 19:22:57
【问题描述】:

我正在处理如何使用 map 在 React 组件的返回中生成 JSX 元素。 我正在尝试制作一个动态表单,源是给定的数组:

我有两种类型的表格,关键“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 intento incompleto:

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

              *** condition *** if input or datepike

           </FormItem>
           </Fragment>


          ))}
        </div>

你知道如何完成这个吗?

【问题讨论】:

    标签: javascript arrays reactjs jsx


    【解决方案1】:

    您可以使用三元操作:

    <div>
          {data.map((value) => (
            <Fragment>
            <FormItem label={value.label}>
    
              {value.tipo === "input" ? <Input name="name1" /> : <DatePicker name="name"/>}
    
    
           </FormItem>
           </Fragment>
    
    
          ))}
    </div>
    

    【讨论】:

      【解决方案2】:

      您可以在tipo 上添加&amp;&amp; 条件并进行相应的渲染。

      <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>
      

      【讨论】:

        猜你喜欢
        • 2019-09-10
        • 2022-10-06
        • 2019-08-16
        • 1970-01-01
        • 2021-05-20
        • 2017-12-26
        • 2017-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多