我试图在没有JSX的情况下渲染一个React组件数组,并设置键(keys)。不幸的是,当我尝试设置数组内的键时,遇到了JavaScript错误:
Uncaught (in promise) TypeError: Cannot assign to read only property 'key' of object '#<Object>'
这是代码:
import React, { Component } from 'react';
class Test extends Component {
mapChildObjects = () => {
const { children } = this.props;
let arr = [];
for (let i = 0; i < children.length; i++) {
arr.push(React.createElement(children[i]));
arr[i].key = i;
}
return arr;
}
render() {
return (
<div>
<div className={s.content}>
{this.mapChildObjects()}
</div>
</div>
);
}
}
export default Test
阅读文档后:https://reactjs.org/docs/react-without-jsx.html,但没有找到在
createElement
中添加key的示例。注意:这个渲染得很好;问题不在组件渲染上,而是在能否添加创建元素的key上。
key
是一个属性,因此我认为类似React.createElement(children[i], {key: i})
这样的代码可以起作用。 - zzzzBov