Reactで子要素を渡せるコンポーネントを作りたい
Reactでこんな感じのやつを作りたい。
jsx
<ButtonGroup selected={this.state.selected} onSelect={this.onSelect}>
<Button>foo</Button>
<Button>bar</Button>
<Button>baz</Button>
</ButtonGroup>
ButtonにButtonGroupからpropsを指定するためのいい方法がイマイチわからないんだけど、React Bootstrapとかのコード読んでるとcloneWithProps
で複製してpropsを渡してるみたいだった。
こんな感じになった。
var ButtonGroup = React.createClass({
onSelect: function(index) {
this.props.onSelect(index);
},
render: function() {
var children = this.props.children.map(function(child, i) {
return React.addons.cloneWithProps(child, {
key: i,
index: i,
onClick: this.onSelect,
selected: +this.props.selected === i,
});
}, this);
return <div className="btnGroup">{children}</div>;
}
});
var Button = React.createClass({
onClick: function() {
this.props.onClick(this.props.index);
},
render: function() {
var cls = this.props.selected ? 'btn selected' : 'btn';
return <span className={cls} onClick={this.onClick}>{this.props.children}</span>;
}
});
でも @koba04 さんの記事にcloneWithProps
はあんまり使いたい場面が思い浮かばないって書いてあるのでもっといい方法があるのではと思っている。
Author And Source
この問題について(Reactで子要素を渡せるコンポーネントを作りたい), 我々は、より多くの情報をここで見つけました https://qiita.com/hokaccha/items/8d810e023251103ec060著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .