javascript – 没有通量的React(JSX)中的子到父通信
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 没有通量的React(JSX)中的子到父通信,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2041字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 没有通量的React(JSX)中的子到父通信](/upload/InfoBanner/zyjiaocheng/701/3218203a9b9a4054a3b50a7dff487bae.jpg)
我是React的新手,我正在努力解决我认为简单的问题.这是我构建的组件的图片.
我想要完成的事情似乎微不足道,但实际上我读过的每篇文章都解释了要做的事情告诉我一些不同的事情,而且其中一个解决方案并没有奏效.它分解为:当用户点击标签时,它会构建一个托盘并循环遍历一系列颜色以构建颜色按钮.单击颜色按钮时,需要将单击的颜色传递给其父组件并运行函数以更新其颜色.我已经读过关于焊剂,事件冒泡,将“this”绑定到属性,并且这些解决方案似乎都没有起作用.对于像我这样的新手来说,React文档基本上没用.我想在这一点上避免像flux这样的复杂事件结构,因为我将一些简单的组件附加到我最初没有在React中编写的现有应用程序中.
另外,PS,这个代码在JSX中,对我来说比直接JS反应更有意义.在此先感谢您的帮助!
var colorsArray = ["#ED5851", "#9CCC64", "#337AEC", "#ff7a45", "#7E58C2", "#FFEB3B", "#78909C", "#FFFFFF", "#213a4b"];
var EditDrawer = React.createClass({
updateColor: function() {
console.log("New Color: " + i);
},
render: function(){
var passTarget = this;
return (
<div className="container-fluid animated fadeIn extra-fast-animation tag-edit-drawer">
<div className="row">
<div className="col-xs-12">
{colorsArray.map(function(object, i){
return <ColorButton buttonColor={object} key={i} />;
})}
</div>
</div>
</div>
);
}
})
var ColorButton = React.createClass({
render: function(){
var buttonStyle = {
backgroundColor: this.props.buttonColor,
};
return (
<div className="tag-edit-color-button" style={buttonStyle} >
</div>
)
}
})
解决方法:
回调函数应该工作.正如您在之前的评论中提到的那样,您可以使用捕获的内容来访问子项中的updateColor函数:
var passTarget = this;
...
...
return <ColorButton
buttonColor={object}
key={i}
update={passTarget.updateColor} />
或者正如波格丹提到的,你可以在你的回调函数后通过地图传递它:
{colorsArray.map(function(object, i){
return <ColorButton
buttonColor={object}
key={i}
update={this.updateColor} />;
}, this)}
你的< ColorButton />然后组件应该能够运行一个简单的onClick函数:
onClick={this.props.update}
然后,您可以简单地使用父组件中的常规事件目标来捕获单击的按钮的颜色:
updateColor: function(e) {
console.log(e.target.style.backgroundColor);
}
这是一个完整的DEMO来演示.
内容总结
以上是互联网集市为您收集整理的javascript – 没有通量的React(JSX)中的子到父通信全部内容,希望文章能够帮你解决javascript – 没有通量的React(JSX)中的子到父通信所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。