【问题标题】:Looping an object in react redux在react redux中循环对象
【发布时间】:2021-08-01 23:20:37
【问题描述】:

我在 modalProps.rows 中有一个对象,如下所示:

我需要用它构建一个选择菜单。这就是我所做的一切

  <Select name="replace_id" onChange={handleActivityAreaChange}>
  {console.log(modalProps.rows)}
    {Object.keys(modalProps.rows).map(({ id, name }, index) =>
      <option key={index}
        value={id}>
        {name}
      </option>
    )}
  </Select>

上面没有给我任何错误,但下拉列表仍然是空的。我错过了什么?


玩了一会儿,这就是我所做的

  const options = []

  Object.keys(modalProps.rows).forEach(key => {
    options.push({value: modalProps.rows[key].id, label: modalProps.rows[key].name});
  });

  const renderActivityAreaList = () => (
    <Flex width="100%">
      {t('entities.activityAreas.used')}
      <Select name="replace_id" options={options} onChange={handleActivityAreaChange} />
    </Flex>
  )

上述工作按预期工作......但我仍然希望我能理解我之前的尝试出了什么问题。

【问题讨论】:

  • 您应该了解更多信息,了解如何获取数据并使用它。
  • 鉴于您的更新,它可能与选择组件和预期接收的内容有关。我更新了我的答案,它应该和你的一样工作。

标签: reactjs react-native react-redux jsx


【解决方案1】:

您应该改用Object.values 来检索您的对象数据:

  <Select name="replace_id" onChange={handleActivityAreaChange}>
  {console.log(modalProps.rows)}
    {Object.values(modalProps.rows).map(({ id, name }) =>
      <option key={id}
        value={id}>
        {name}
      </option>
    )}
  </Select>

注意:更喜欢将您的 id 作为键而不是数组的索引

更新

鉴于您的实现,它可能与 Select 组件预期接收的内容有关。如果你喜欢:

const options = Object.values(modalProps.rows).map(({ id, name }) => ({ value: id, label: name }))

const renderActivityAreaList = () => (
  <Flex width="100%">
    {t('entities.activityAreas.used')}
    <Select name="replace_id" options={options} onChange={handleActivityAreaChange} />
  </Flex>
)

你很可能会面临同样的结果

【讨论】:

  • 感谢您的帮助。我刚刚尝试了上述方法并得到了相同的结果......没有错误但菜单为空。
  • 那么你需要展示你在代码中做了什么,我们无法预测出了什么问题。
  • modalProps.rows 中的数据似乎在一个子对象中。我很确定问题出在我映射它的方式上,但我不知道该怎么做。如果我记录 Object.values(modalProps.rows).map((option) 选项为空,但它会为适量的数据创建一个空日志行。如果我记录 odalProps.rows,我会在我提供的图片中看到上述值.
  • 对于给定的对象结构 Object.values 应该可以工作。您可以尝试控制台记录一个元素,例如 modalProps.rows[30],然后只渲染 检查是否显示正确
猜你喜欢
  • 2019-03-14
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 2021-05-07
  • 2020-07-19
  • 2018-07-24
相关资源
最近更新 更多