【问题标题】:how to dynamically add SelectOption in React.js如何在 React.js 中动态添加 SelectOption
【发布时间】:2020-07-09 03:54:17
【问题描述】:

有一个列表 l:

l = [
 ["a","b"],
 ["c","d"]
]

我想用我写的这个列表动态地创建一个 SelectOption 字段:

            <Field
              name="successData.val"
              render={({ field: { name } }) => (
                <Column>
                  <Select
                    onChange={value => setFieldValue(name, value)}
                    placeholder="dummy"
                    width={300}
                  >
                    {l.forEach(key => (
                      <SelectOption
                        value={key[0]}
                        label={key[1]}
                      />
                    ))}
                  </Select>
                </Column>
              )}
            />

但是当我点击下拉按钮时,列表没有出现,只是框的上边界被突出显示,似乎下拉菜单正在生成,但不正确。

谁能建议这个实现中可能有什么问题?

【问题讨论】:

    标签: javascript reactjs list


    【解决方案1】:

    使用map()

    {l.map(key => (
      <SelectOption
        value={key[0]}
        label={key[1]}
      />
    ))}
    

    【讨论】:

    • 谢谢!,它工作,但为什么它不能与 forEach 一起工作?
    • map 返回一个新的返回值数组(React 然后通过按顺序渲染每个组成组件来渲染它),而 forEach 忽略传入函数的返回值(简单地使用它对于任何“副作用”)。所以l.forEach(...) 在你的情况下,函数没有任何副作用,与undefined 没有什么不同。 (当然你不应该在render 内做任何有副作用的事情。)
    • 又一个疑问,选择其中一个选项后,在输入框中没有显示,值仍然是占位符值,那会是onChange函数的问题吗?
    • setFieldValue 定义为 setFieldValue: PropTypes.func.isRequired in props
    • @Saurabh 猜你可以发一个新帖子,具体描述可以帮助其他人快速找到你的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2021-09-20
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多