【问题标题】:Select with React.JS - dynamically populated options使用 React.JS 选择 - 动态填充的选项
【发布时间】:2018-01-30 13:28:23
【问题描述】:

我正在尝试将 [stateless component of] React/Redux 应用程序中的选择填充为:

const FillSelect = ({team}) => <option value={team.onboardingOrder}>{team.name}</option>

const TeamSelector = ({teams}) => {
  return (
    <select>
      <option value="">All</option>
      {
        teams ? (teams => teams.map(team => <FillSelect team={team} />)) : null
      }
    </select>
  )
}

团队看起来像:{0:{id: 1, name: "Program Management", onboardingOrder: 0, …}, 1: {id: 2, name: "Value Capture", onboardingOrder: 1, …}…}

返回错误:Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it. in select ...

这是因为我使用的是map()吗?这样做的正确方法是什么?

【问题讨论】:

标签: javascript reactjs redux immutable.js


【解决方案1】:

你没有直接调用 map;如果teams 是真实的,则返回一个函数(teams =&gt; ...)。您可能希望这条线看起来像这样:

teams ? teams.map(team => <FillSelect team={team} />) : null

这将产生一个&lt;FillSelect /&gt; 的数组。

【讨论】:

  • 没有任何区别。
【解决方案2】:

这很好用:

  return (
    <select>
      <option value="">All</option>
      {
        Object.values(teams).map((team, i) => <option value={team.onboardingOrder} key={i}>{team.name}</option> )
      }
    </select>
  )

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多