【发布时间】:2015-01-30 10:05:26
【问题描述】:
假设你有一个Dropdown React 组件:
var Dropdown = React.createClass({
render: function () {
return (
<div className="dropdown" />
);
},
itemSelected: function (item) {
this.setState({
value: item.props.value
});
}
});
还有一个对应的Option:
var Option = React.createClass({
_onClick: function () {
this.props.onSelect(this);
},
render: function () {
return (
<div className="item" onClick={this._onClick}>{this.props.value}</div>
);
}
});
现在想象你像这样一起使用这些组件:
var ColorForm = React.createClass({
render: function () {
return (
<div>
<label>Pick a color</label>
<Dropdown>
<Option onSelect={???.itemSelected} value="red" />
<Option onSelect={???.itemSelected} value="blue" />
<Option onSelect={???.itemSelected} value="green" />
</Dropdown>
</div>
);
}
});
注意 onSelect={???.itemSelected} 位。
如何将父下拉列表的itemSelected 方法传递给每个孩子?
我知道如果我创建一个 custom 下拉类,这很容易,但这违背了组件的目的:
var ColorDropdown = React.createClass({
render: function () {
return (
<div className="dropdown">
<Option onSelect={this.itemSelected} value="red" />
<Option onSelect={this.itemSelected} value="blue" />
<Option onSelect={this.itemSelected} value="green" />
</div>
);
},
itemSelected: function (item) {
this.setState({
value: item.props.value
});
}
});
【问题讨论】:
标签: reactjs reactjs-flux