因此,如果我有一个带有render方法的组件来调用this.props.children来渲染任何子节点,我可以将任何道具从父节点传递给它试图渲染的子节点吗?
例如,请考虑以下事项:
import React, { Component } from 'react';
import CoreSceneManager from '../engine/scene_manager';
export default class SceneManager extends Component {
constructor(props) {
super(props);
this._sceneManager = new CoreSceneManager();
}
componentWillMount() {
this._sceneManager.registerScenes(this.props.children);
}
componentWillUnmount() {
this._sceneManager.exit();
}
render() {
return(
<div>
{this._sceneManager.getCurrentScene()}
</div>
);
}
}
原样使用:
export default class SceneHandeling extends Component {
constructor(props) {
super(props)
}
render() {
return(
<Loop>
<SceneManager>
<ExampleSceneA />
<ExampleSceneB />
</SceneManager>
</Loop>
);
}
}
我们所做的只是渲染场景管理器中的一个场景,但正如我们在场景管理器组件中看到的那样,我有一个&#34;私有变量&#34;叫this._sceneManager
。
我想将这个传递给孩子们,在这种情况下ExampleSceneB
,因为这些是呈现给页面的。
答案 0 :(得分:1)
是的,您需要做的就是使用您想要的其他道具克隆元素。像这样。
componentWillMount() {
const childrenWithProps = React.Children.map(this.props.children,
(child) => React.cloneElement(child, {
sceneManager: this._sceneManager
})
);
this._sceneManager.registerScenes(childrenWithProps);
}