【发布时间】:2018-12-15 15:18:16
【问题描述】:
我有这个反应组件。这没有正确渲染,但会收到一个烦人的警告,例如
函数作为 React 子级无效。如果您返回 Component 而不是从渲染中返回,则可能会发生这种情况。或者,也许您打算调用这个函数而不是返回它。
这是我的组件。我在这里做错了什么?
import React, { Component } from 'react';
class Squares extends Component {
constructor(props){
super(props);
this.createSquare = this.createSquare.bind(this);
}
createSquare() {
let indents = [], rows = this.props.rows, cols = this.props.cols;
let squareSize = 50;
for (let i = 0; i < rows; i++) {
for (let j = 0; i < cols; j++) {
let topPosition = j * squareSize;
let leftPosition = i * squareSize;
let divStyle = {
top: topPosition+'px',
left: leftPosition+'px'
};
indents.push(<div style={divStyle}></div>);
}
}
return indents;
}
render() {
return (
<div>
{this.createSquare()}
</div>
);
}
}
export default Squares;
更新
@Ross Allen - 进行更改后,渲染方法似乎处于无限循环中,可能会导致内存崩溃
【问题讨论】:
-
您将函数引用作为子项传递。技术上应该是 {this.createSquare()}
-
为什么错误信息不清晰?只有两个地方你会经过一个孩子。
-
@FelixKling:是的,错误消息有点令人困惑。即使在我立即调用函数 createSquare() 之后,我仍然遇到内存错误。
-
i < cols应该是j < cols -
请不要更正原始代码块。这使得有类似问题的人很难看到它是如何解决的。
标签: javascript reactjs react-component