【发布时间】:2017-07-14 21:02:33
【问题描述】:
作为一个例子(真实尝试过的代码) 我有一个组件,我想为其启动一个新实例以进行渲染。
import React, { Component } from 'react';
export default class TinyObject extends Component {
constructor(props) {
super(props);
console.log("TinyObject constructor");
}
render() {
console.log("TinyObject render");
return (
<div>HEY THIS IS MY TINY OBJECT</div>
);
}
}
然后在主 App 构造函数中执行以下操作:
var myTinyObject = new TinyObject();
var myArray = [];
myArray.push(myTinyObject);
this.state = {testing: myArray};
然后创建了一个函数来渲染这个:
renderTest()
{
const {testing} = this.state;
const result = testing.map((test, i) => {
console.log(test);
return {test};
});
}
我从 App 渲染函数中这样调用它:
render() {
const { gametables, tableActive } = this.state;
console.log("render");
return <div><div>{this.renderTest()}</div></div>;
}
它运行,没有错误。 我看到以下控制台日志:
console.log("TinyObject constructor");
console.log(test);
但我没有看到 TinyObject 渲染的控制台日志,也没有看到渲染输出。
感谢 lustoykov 的回答让我更进一步
JSX: var myTinyObject = <TinyObject />;
有效!
但是在真正的应用程序中我添加了一点,这里不知道该怎么做。
return <GameTable key={'gt'+index} data={table} settings={this.settingsData} sendTableNetworkMessage={this.sendTableNetworkMessage} />
这是我渲染的方式;我需要更多的 GameTable 实例 现在的问题是;如何将数据和设置等参数添加到 myTinyObject。
感谢到目前为止的帮助。
【问题讨论】:
-
这样做的主要目的是什么?你实际上想要做什么 - 渲染一个数组?
-
在真正的应用程序中,它是一个有很多状态的游戏类。所以现在我可以渲染一次,但玩家应该能够/启动尽可能多的游戏桌。在我的示例中,我使用 NEW 关键字,因为我习惯于这种创建新实例的方式,但如果有任何其他方式来完成同样的事情,那很好。我只需要多个游戏表。
-
这太命令式了。 React 的要点之一是声明性。尝试用一些业务逻辑拆分 UI 组件和组件。如果您能获得有关您的任务的更多信息,我会尽力帮助您。