javascript - 尝试使用 React 的 <select> 创建下拉选择菜单并将数组中的用户映射为选项

标签 javascript reactjs

我正在尝试创建一个简单的应用程序来将用户添加到数据库(MongoDb)并在下拉菜单中显示用户列表。

在表单中,我收到两个错误,一个错误与结束标记(即 )有关,另一个错误与从数组映射用户列表有关。

下面是我的表单,位于 render() 方法之后。

我尝试更改为 ,这消除了其中一个错误,但在阅读了 React 文档后,我不明白为什么不应该工作。

第二个错误与 map 函数有关 (this.state.users.map((user) => {)

 render() { 
        return ( 
        <div>
            <h3>Create new exercise log</h3>
            <form onSubmit={this.onSubmit}> 
                <div className="form-group">
                    <label>Username: </label>
                    <select ref="userInput"
                        required
                        className="form-control"
                        value={this.state.username}
                        onChange={this.onChangeUsername}
                        {
                            this.state.users.map((user) => {
                                return <option
                                    key={user}
                                    value={user}>{user}
                                    </option>;
                            })
                        }
                    </select>
                </div>
            </form>
        </div>
        )
    }

目前,用户数组是一个硬编码数组,因为我还没有添加到数据库:

    componentDidMount() {
        this.setState({ //set the state of the users array
            users: ['test user'], 
            username: 'test user'
        })
    }

这是浏览器中的错误:

  Line 75:  Parsing error: Unexpected token, expected "..."

  73 |                         onChange={this.onChangeUsername}
  74 |                         {
> 75 |                             this.state.users.map((user) => {
     |                             ^
  76 |                                 return <option
  77 |                                     key={user}
  78 |                                     value={user}>{user}

最佳答案

您忘记用 > 关闭 select 开始标记:

<select ref="userInput"
  required
  className="form-control"
  value={this.state.username}
  onChange={this.onChangeUsername} > //<== Here
      {
          this.state.users.map((user) => {
              return <option
                  key={user}
                  value={user}>{user}
                  </option>;
          })
      }
</select>

关于javascript - 尝试使用 React 的 <select> 创建下拉选择菜单并将数组中的用户映射为选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57711962/

相关文章:

html - 元素无意中随着内容的变化而移动

javascript - 如何从函数内将数据推送到可读流?

javascript - 访问并显示位于另一个组件中的模式

reactjs - 为什么我收到 ReferenceError : self is not defined when I import a client-side library?

javascript - Express Static 不提供文件服务

javascript - ReactJS:如何在选择输入上显示占位符

javascript - 获取/捕获 promise 中的响应状态

javascript - 序列化可观察量

javascript - 如何在 Bootstrap 轮播的下一个/上一个点击上加载 JSP 页面

javascript 模块模式变量范围