您的布局与自述文件所说的不匹配。它应该是一组布局对象,每个内容条目一个对象。您提供了一个对象,没有任何数组环绕它。
你可能想要这样的东西:
var React = require('react');
var hash = require('hashfunctionofsomesort');
var MyGrid = React.createClass({
getDefaultProps: function() {
divcontent: [
"rectangle 1",
"rectangle 2"
],
defaultLayout: {
x: ..., y: ..., w: ..., h: ...
}
},
generateDivs: function() {
return this.props.divcontent.map(function(content) {
return <div key={hash(content)}>{content}</div>;
});
},
generateLayouts: function() {
var defaultLayout = this.props.defaultLayout;
var divs = this.props.divcontent;
return divs.map(function(div, index) {
var layout = defaultLayout;
// basically generate a layout here. Whatever values work for you.
layout.y = index;
return layout;
});
},
render: function() {
var layouts = this.generateLayouts();
var divs = this.generateDivs();
return <ReactGridLayout layout={layouts}>{divs}</ReactGridLayout>;
}
});
所以:每个 div 一个布局,并且正确地做键:键应该表示您正在键入的组件,如果您的键是基于您指定元素的顺序,那么您做错了键。键的要点是允许快速差异,使用排序就像它们是键意味着如果你重新排序你的键,而不是 React 去“这些元素刚刚被交换”,它会看到两个元素的完整属性和内容更新,制作东西慢很多。