【发布时间】:2018-08-01 23:13:25
【问题描述】:
React.cloneElement() 总是需要第一个参数作为反应组件,它应该作为子项传递给 props。
有没有办法将一个简单的 HTML 节点作为子节点传递。请参考下面的代码以更好地理解我的问题:
Dialog.jsx(通用组件):
return (
<div className="app-dialog-jsx" ref={(ele) => this.ele = ele}>
{this.state.show && React.cloneElement(this.props.children, {
contentStyle: {
height: 400,
overflowY: 'auto',
overflowX: 'hidden'
},
method1: this. method1,
method2: this. method2
})}
</div>
);
现在我不能通过:
<Dialog
ref={(dialog)=>this.dialog=dialog}
method1={()=>console.log(1)}
method2 ={()=>console.log(1)}
>
<h4>somethign</h4>
</Dialog>
H4 需要是一个 react 组件,否则它不会在 cloneElement 中设置 props。我怎样才能在这里发送简单的 HTML,有什么帮助吗?
【问题讨论】:
-
有什么问题?它应该工作。检查working fiddle。如果我遗漏了什么,请告诉我。
-
您可以在这里查看jsfiddle.net/pk1t65Lu/17。我已经修改了
-
是的,这应该可以。 在 JSX 中使用时是一个 React 元素。
-
但是 test1 没有渲染道具。我想要简单的 HTML 来呈现道具。这就是问题所在。
标签: javascript reactjs