使用 reactjs 创建链接的覆盖
Create an override of a link with reactjs
我想在 react 中创建一个自定义类型的链接,我可以像标签一样使用它,但它会覆盖 onClick 以尝试使用单页应用程序路由器。它将链接作为道具,并返回相同的链接,并覆盖点击事件。
React.createClass({
render: function () {
//super naughty but I cant think of a better way of overloading just this
var oldOnClick = this.props.a._store.props.onClick;
this.props.a._store.props.onClick = function () {
if (oldOnClick) {
oldOnClick();
}
router.navigate(this.props.a._store.props.href);
return false;//always false as were using a router
}.bind(this);
return this.props.a;
}
});
这在功能上完全符合预期,但它非常粗暴,并且依赖于使用对象的私有属性。什么是"正确"的方法。
如传输...在 JSX 中,您可以使用 JSX 转换器的 harmony
标志启用的 spread 运算符将任何用户定义的onClick
从其他 props 中分离出来,然后使用 JSX 扩散属性将其余部分传递给<a>
:
var Link = React.createClass({
_onClick(e) {
if (this.props.onClick) {
this.props.onClick()
}
e.preventDefault()
router.navigate(this.props.href)
},
render() {
var {onClick, ...others} = this.props
return <a {...others} onClick={this._onClick}>{this.props.children}</a>
}
})
或者,您可以手动配置prop覆盖,例如,这就是react-router实现其Link
组件的render()
的方式,浅拷贝props然后覆盖那些需要由组件配置/处理的props:
render: function () {
var props = assign({}, this.props, {
href: this.getHref(),
className: this.getClassName(),
onClick: this.handleClick
});
return React.DOM.a(props, this.props.children);
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 如何使用jQuery自动打开页面上的所有链接
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- jquery动画可以通过编程链接吗
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 角度:覆盖'@'链接或控制器中隔离作用域中的属性
- 在覆盖和关闭按钮或链接中为img添加边框
- 使用 reactjs 创建链接的覆盖
- 如何使用链接包装元素覆盖它事件
- 使用链接在谷歌地图中切换地面覆盖
- Angular JS覆盖ng-app之外的A链接
- 使用Jquery或CSS覆盖硬编码链接
- 使用CSS悬停类悬停在链接上,并在页面的其他位置显示覆盖图像
- SlickNav菜单覆盖在徽标上,使链接无法点击
- 如何覆盖图像和链接路径在iframe对象
- HTML嵌入的PDF所有链接覆盖在一个新的选项卡中打开(target="_blank")
- 单击链接时,如何在覆盖层中切换日历或日期选择器
- 无论如何,强制/覆盖html,并得到一个链接,在一个新的选项卡/窗口打开
- IPhone 4链接创建红色半透明背景/覆盖触摸:激活
- jQuery-捕获并覆盖target=_blank的链接