首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在React中循环数组以在函数中构建html-select项列表并在render()中调用它,正确的方法是什么?

在React中循环数组以在函数中构建html-select项列表并在render()中调用它,正确的方法是什么?
EN

Stack Overflow用户
提问于 2017-08-15 11:48:48
回答 2查看 1.2K关注 0票数 1

我的第一个想法是用传统的方法,即在函数中以字符串的形式收集所有数据,然后以dangerouslySetHtml的形式返回。稍后,我可以在render()中以{this.renderList()}的身份调用该函数。我怎么做“反应方式”,即在一个方法中构建JSX元素并在render()中实现它?下面是我如何处理这种情况的一个随机示例。

代码语言:javascript
复制
constructor(props)
{
  super(props);
  this.state = {
     users: [{..}, {..}, {..}],
     info: [{..}, {..}]
  };
}

renderSelectDropdown()
{
    data = '<select>'

    this.state.users.forEach(user =>
    {   
        data +=  '<optgroup label={user.title}>';
        for (let item in this.state.info)
        {
            this.state.info[user.name][item].forEach(s => {
                data += '<option>'+ s +'</option>';
            })
        }
        data += '</optgroup>'
    });

    data += '</select>';

    return {__html: data};
}

render()
{
    return (

        <div>
            <input type="text" name="name">
            <div dangerouslySetInnerHTML = this.renderSelectDropdown()></div>
        </div>
    )
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-15 12:06:22

试试这个:

代码语言:javascript
复制
renderSelectDropdown() {
    let list = [];

    this.state.users.forEach((user, idx) =>
    {   
        let opt = this.state.info.map((item) => {
            this.state.info[user.name][item].map((s, key) => {
                <option key={key}>{s}</option>;
            })
        });

        list.push(<optgroup key={idx} label={user.title}>{opt}</optgroup>);

    });

    return list;
}

render() {
    let list = renderSelectDropdown();

    return (
        <div>
           <input type="text" name="name">
           <select>
              {list}
           </select>
        </div>
    )
 }
票数 3
EN

Stack Overflow用户

发布于 2017-08-15 12:01:13

react方法就是这样简单的

代码语言:javascript
复制
<div>
{this.state.users.map(user => {
  return <p> {user.prop} </p>
})}
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45686202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档