我有以下 JavaScript 代码,它按预期工作......
/** @jsx React.DOM */
var TreeView = React.createClass({
render: function() {
return <div ref="treeview"></div>;
},
componentDidMount: function() {
console.log(this.props.onChange);
var tree = $(this.refs.treeview.getDOMNode()).kendoTreeView({
dataSource: ...,
dataTextField: "Name",
select: this.props.onChange
}
});
}
});
var MyApp = React.createClass({
onChange: function(e) {
console.log(e);
this.setState({key: e});
},
render: function() {
return (
<div>
<TreeView onChange={this.onChange}/>
<GridView />
</div>
);
}
});
但是,在剑道树视图中,在选择树节点时,会传递整个节点。要获得底层密钥,我需要按如下方式处理节点:
select: function(e) {
var id = this.dataItem(e.node).id;
this.props.onChange(id);
}
但是,我显然没有完全正确,在这里请原谅我的菜鸟,似乎在工作实例中使用了对该函数的引用,而在非工作实例中,该函数实际上正在执行。 ..或类似的东西:返回的错误消息是:
无法调用未定义的方法“onChange”。
那么我需要做什么才能在调用onChange
方法之前引用提取密钥的函数呢?请注意,如果我的理解是正确的,则onChange
需要在 MyApp 类的上下文中执行,以便任何子组件都会收到有关更改的通知。
编辑:我尝试过使用部分应用程序,但还没有完全到位。我已经更新了onChange
例程以获取一个从节点返回密钥的函数
onChange: function(getKey, e) {
this.setState({Key: getKey(e)});
},
但我不确定如何将它全部连接起来。