小道具としてのメソッドをすべての子に渡そうとしています。しかし、コンソールに子小道具を印刷すると、未定義と表示されます。すべての子に小道具としてのメソッドを渡す
コンソール出力:すべての子供たちに小道具としてopenLightbox、closeLightboxとsetLightboxStateメソッドを渡す
Object {openLightbox: undefined, closeLightbox: undefined, setLightboxState: undefined, key: 0}
。変数childPropsに設定します。何の方法openLightbox
がない
.map
で
var Lightbox = React.createClass({
getInitialState: function(){
return { display: false };
},
componentWillMount: function(){
if (this.props.data)
this.setState(this.props.data);
},
openLightbox: function(){
this.setState({display: true});
},
closeLightbox: function(){
this.setState({display: false});
},
setLightboxState: function(obj){
this.setState(obj);
},
render: function(){
var childrenWithProps = this.props.children.map(function(child, i) {
var childProps = {
openLightbox: this.openLightbox,
closeLightbox: this.closeLightbox,
setLightboxState: this.setLightboxState,
key: i
};
console.log(childProps)
for (var j in this.state){
childProps[j] = this.state[j];
}
var childWithProps = React.cloneElement(child, childProps);
return childWithProps;
});
return (
<div>
{childrenWithProps}
</div>
);
}
});