当前位置: 首页 > 知识库问答 >
问题:

对警告键做出反应,但没有列表或提示。地图

曾明诚
2023-03-14

React文档说,"key"是一个特殊的字符串属性,在创建元素列表时需要包含。

但是我在没有渲染列表的情况下得到了反应键警告,我不知道为什么。

我有这个组件称为展开Card.js,它有条件地呈现标题子元素:

  // ExpandleCard return call
  ...
  return <Card className={classes.expandableCard} classes={{ root: classes.cardRoot }}>
    <div className={classes.cardHeader}>
      { props.header ? props.header : null }
      <div className={classes.headerActions}>
        {
          expanded
            ? <KeyboardArrowUp onClick={() => { setExpanded(false) }} />
            : <KeyboardArrowDown onClick={() => { setExpanded(true) }} />
        }
        { props.editable && props.onRemove ? <Close onClick={props.onRemove} /> : null }
      </div>
    </div>
    ...
    // renders children
   <Card/>

当我正常使用合成渲染组件时:

...
return <ExpandableCard header={<h4 className={c.cardTitle}>{t('record_summary.summary')}</h4>}>
    {Object.keys(displayKeys).map((d, i) => {
      return <DetailRow title={d} value={displayKeys[d]} key={i} />
    })}
  </ExpandableCard>
}

我得到了反应警告错误

react-dom.development.js:530 Warning: Each child in a list should have a unique "key" prop. See https://reactjs.org/docs/lists-and-keys.html for more information.
    in div
    in div (created by ForwardRef(Paper))
    in ForwardRef(Paper) (created by WithStyles(ForwardRef(Paper)))
    in WithStyles(ForwardRef(Paper)) (created by ForwardRef(Card))
    in ForwardRef(Card) (created by WithStyles(ForwardRef(Card)))
    ...

我最初认为这是我使用DetailRow子级映射呈现的列表的错误,但我发现,当我使用键呈现标题道具时,错误消失了:

返回

为什么会反应警告我关于不映射到列表中的dom元素上的键?


共有1个答案

魏宸
2023-03-14

因此,我发现我的问题在于在开发环境中启用@babel/plugin transform-react内联元素。

通过将其更改为仅在生产中启用,我的错误消失了:

module.exports = {
  plugins: [...],
  presets: [...],
  env: {
    production: {
      plugins: [
        '@babel/plugin-transform-react-inline-elements'
      ]
    }
  }
}

根据巴贝尔关于插件的文档:

此转换只应在生产环境中启用(例如,在缩小代码之前),因为尽管它可以提高运行时性能,但它会使警告消息更加隐晦,并跳过开发模式中发生的重要检查,包括proptype。

 类似资料:
  • Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages. Examples Alerts are available for any length of text, as well as an optional di

  • AlertTips 警告提示 使用场景 当某个页面需要向用户显示警告的信息时。 非浮层的静态展现形式,始终展现,不会自动消失,用户可以点击关闭。 平台差异说明 App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序 √ √ √ √ √ √ √ 基本使用 通过title和description设置组件的标题和描述内容,如果内容和标题同时存在,标题字体会被加粗加大 通过type设置

  • 我一直在调试这个,开始掉头发。到目前为止,我还没有找到解决办法。这是组件。我最初是为组件编写测试的,但是由于样式化的组件,它出现了一些错误,所以我的技术负责人告诉我为这个新的组件(这是组件中的新组件)编写测试,因为它可能有一些效果。运行<代码>摘要时。测验tsx我收到此错误(与钥匙相关): 我的挑逗测试: 我的戏弄组件:

  • 我是一名Android应用程序开发人员,从上一个月开始研究 React 原生。我有问题,对于那些我无法找到解决方案的人: > 确实反应原生使用而不是来表示字体大小,并且如果我们想使用dp来表示字体大小怎么办。 我想为布局提供、和 维度,如何做到这一点? 如何为7英寸平板电脑、10英寸平板电脑和手机提供单独的尺寸?出于某种目的,我想为react-native实现isDeviceTablet()方法,

  • 在这个简单的React应用程序中,我不明白为什么我会收到以下警告信息: 警告:列表中的每个孩子都应该有一个唯一的“键”道具。 对我来说,似乎我把密钥放在了正确的位置,形式为key={item.login.uuid} 我怎样才能摆脱警告信息?把钥匙放在哪里合适? 应用程序。js 列表js

  • 我在https://grails.org/wiki/Quick当我用“grails run app”启动应用程序时,它运行良好。 如果我使用“grails war”构建应用程序并将war部署到我的tomcat 8中,我只会收到404个错误。tomcat管理器应用程序将我的应用程序列为已启动,日志文件中没有错误。 我错过了什么? 我使用grails 3.2.0 这似乎是引导。未执行groovy。我这