【问题标题】:react-grid-layout example Unknown prop `_grid` on <div> tagreact-grid-layout 示例 <div> 标签上的未知道具`_grid`
【发布时间】:2016-07-14 07:44:31
【问题描述】:

我正在尝试实现react-grid-layout。所有示例都通过_grid div 属性传递网格项配置:

createElement(el) {
  ...
  return (
    <div key={i} _grid={el}>
      ...
    </div>
  );
},

在我的实现中:

return (
  <div key={i} _grid={el}>
    <DashboardTestWidget widgetName={el.name} menuName={this.props.menuName}/>
    <span className="remove" style={removeStyle} onClick={this.onRemoveItem.bind(this, i)}>x</span>
  </div>
)

我收到一个错误:

dashboard_view.browserify.browserified.js:1216 Warning: Unknown prop `_grid` on <div> tag. Remove this prop from the element. For details, see <URL ommitted because SO complained about URL shorteners>
  in div (created by DashboardLayout)
  in Resizable (created by GridItem)
  in DraggableCore (created by GridItem)
  in GridItem (created by ReactGridLayout)
  in div (created by ReactGridLayout)
  in ReactGridLayout (created by ResponsiveReactGridLayout)
  in ResponsiveReactGridLayout (created by _class)
  in _class (created by DashboardLayout)
  in div (created by DashboardLayout)
  in DashboardLayout

我对 React 还很陌生。我做错了什么?


我使用的相关npm包版本:

"react": "^15.2.1",
"react-dom": "^15.2.1",
"react-grid-layout": "^0.12.7",

【问题讨论】:

标签: reactjs react-grid-layout


【解决方案1】:

这是 React 在今年 5 月左右对其代码库进行的更改。有关这方面的更多信息,请参阅this pull request

您收到此错误的原因是因为您试图呈现 HTML 无法识别的属性。

在 HTML5 中,您需要使用 data-* 定义自定义属性。

为了防止警告出现在您的案例中,您必须将您的渲染方法更改为此。

return (
    <div key={i} data-grid={el}>
        <DashboardTestWidget widgetName={el.name} menuName={this.props.menuName}/>
        <span className="remove" style={removeStyle} onClick={this.onRemoveItem.bind(this, i)}>x</span>
    </div>
);

请注意,_grid 已更改为 data-grid,react 现在会将其识别为有效的 HMTL 属性。

使用 React 需要注意的一点是,它允许您将自定义 props 传递给自定义组件,但是当您将这些组件渲染为 HTML 时,它们需要是有效的 HTML 属性。

【讨论】:

  • _grid 更改为data-grid 使错误消失了,但现在我为每个el 设置的hw 似乎不适用并且所有仪表板项目都缩小了加载到1x1。这将是一个好的方向,只是框架必须采用 wh(和其他属性)。
  • 嗯,在调试器中我看到了data-grid="[object Object]"。我想我必须 JSON 序列化?
  • 即使我 JSON 字符串化,data-grid="{"i":"0","x":0,"y":0,"w":6,"h":4,"add":false,"name":"react_test_bar_graph"}" 也不会被拾取
  • 也试过var propBag = { 'data-grid': {x: ${el.x}, y: ${el.y}, w: ${el.w}, h: ${el.h}} ` };` 然后&lt;div key={i} {...propBag}&gt;.
  • 新的 react-grig-layout 现在没有这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
相关资源
最近更新 更多