3 回答
TA贡献2012条经验 获得超12个赞
OP使这个问题成为一个移动的目标。它又被更新了。因此,我觉得有责任更新我的答复。
首先,回答您提供的示例:
onClick
this.props.onClick.bind(null, this)
:
var Child = React.createClass({ render: function () { return <a onClick={this.props.onClick.bind(null, this)}>Click me</a>; }});
onClick: function (component, event) { // console.log(component, event); },
但这个问题本身就有误导性。
props
.
var Child = React.createClass({ render: function () { return <a onClick={this.props.onClick}> {this.props.text} </a>; }});var Parent = React.createClass({ getInitialState: function () { return { text: "Click here" }; }, onClick: function (event) { // event.component.props ?why is this not available? }, render: function() { return <Child onClick={this.onClick} text={this.state.text} />; }});
在这个例子中,你已经清楚地知道了什么是孩子的道具。
如果它真的是关于使用孩子的道具…
props
var Child = React.createClass({ render: function () { return <a {...this.props}> {this.props.text} </a>; }});
var Parent = React.createClass({ getInitialState: function () { return { text: "Click here" }; }, onClick: function (text) { alert(text); }, render: function() { return <Child onClick={this.onClick.bind(null, this.state.text)} text={this.state.text} />; }});
当您连接其他的子组件时,不需要额外的配置
var Parent = React.createClass({ getInitialState: function () { return { text: "Click here", text2: "No, Click here", }; }, onClick: function (text) { alert(text); }, render: function() { return <div> <Child onClick={this.onClick.bind(null, this.state.text)} text={this.state.text} /> <Child onClick={this.onClick.bind(null, this.state.text2)} text={this.state.text2} /> </div>; }});
一个健壮的实例
孩子们完全无知。
ServiceItem
<div onClick={this.props.handleClick.bind(this.props.index)} />
handleClick
index
[
父母是孩子
DTServicesCalculator
DTServiceCalculator
ServiceItem
ServiceItem
<ServiceItem chosen={chosen} index={i} key={id} price={price} name={name} onSelect={this.props.handleServiceItem} />
handleServiceItem
handleServiceClick (index) { this.props.onSelect(index);}
所有人都知道
handleSelect (index) { let services = […this.state.services]; services[index].chosen = (services[index].chosen) ? false : true; this.setState({ services: services });}
结语
TA贡献1811条经验 获得超4个赞
var Child = React.createClass({ render: function() { <a onClick={this.props.onClick.bind(null, this)}>Click me</a> }});var Parent = React.createClass({ onClick: function(component, event) { component.props // #=> {Object...} }, render: function() { <Child onClick={this.onClick} /> }});
bind(null, this)
this.props.onClick
component
event
添加回答
举报