【发布时间】:2019-01-25 01:39:06
【问题描述】:
我想将模板作为道具或子项传递,每次单击“添加”时,我都想再添加一个项目。
这是我到目前为止的地方:
App.js
<List template={
(<Item>
<span>Test</span>
</Item>)
} />
List.js
...
add = () => {
const list = this.state.list;
const i = list.length + 1;
const newItem = cloneElement(this.props.template, { key: i });
this.setState({ list: this.state.list.concat([newItem]) });
}
...
render() {
return (
<div className="list">
{this.state.list}
<button onClick={this.add}>Add</button>
</div>
);
}
但尽管添加了一个新项目,但它没有子项,因此“项目”存在,但“跨度”不存在。所以列表总是空的。
有人知道怎么做这样的事情吗?
关键是 List 不能知道传递给它的内容。无论你通过什么,它都应该添加。
【问题讨论】:
-
不确定是否是同一个问题。在这种情况下,SampleComponent 是在 App 组件中定义的。我想要的是 App 组件现在了解 SampleComponent。它必须将其作为道具接收
标签: javascript reactjs jsx react-component