0
我正在使用没有通量的反应轨道。通过父对象本身作为儿童的道具
我意识到我在我的父组件jsx
文件中定义了太多的函数,所以我想重构它并在另一个文件中定义函数。
# application.js
//= require_self
//= require react
//= require react_ujs
//= require components
//= require_tree .
window.myApp = {}
# custom.js
myApp.sayLol = function(parentComponent) {
alert("LOL");
parentComponent.setState({something: 'something'});
}
# parent_component.js.jsx
var ParentComponent = React.createClass({
// sayLol: function(){
// alert("LOL");
// this.setState({something: 'something'});
// },
render: function(){
// return (<ChildComponent sayLol={this.sayLol} />);
return (<ChildComponent parentComponent={this} />);
}
})
# child_component.js.jsx
var ChildComponent = React.createClass({
handleClick: function(){
myApp.sayLol(this.props.parentComponent);
},
render: function(){
return (<div onClick={this.handleClick}>say LOL</div>)
}
})
所以我所做的就是定义的功能,即sayLol()
,该成分会在一个单独的custom.js
文件来调用。
教程的方式是将父组件内部的函数定义为本地函数,通常作为道具传递给子项,如parent_component.js.jsx
中的注释所示。
我还传递父对象,以便我可以使用custom.js
中定义的解耦函数来执行某些操作,例如将父对象的状态从子组件中更改。
它目前正在处理我的应用程序,但我不确定是否将父对象本身作为整体传递是件好事。爱听到任何建议:)在此先感谢。