我已经构建了自己的自定义react-bootstrap Popover组件:
export default class MyPopover extends Component {
// ...
render() {
return (
<Popover {...this.props} >
// ....
</Popover>
);
}
}
该组件的呈现方式如下:
// ... my different class ...
render() {
const popoverExample = (
<MyPopover id="my-first-popover" title="My Title">
my text
</MyPopover >
);
return (
<OverlayTrigger trigger="click" placement="top" overlay={popoverExample}>
<Button>Click Me</Button>
</OverlayTrigger>
);
}
现在,我想向MyPopover
组件中添加自定义道具,例如:我的文字,并使用新道具在弹出框中设置一些内容,例如-
<Popover {...this.props} className={this.getClassName()}>
{this.showTheRightText(this.props)}
</Popover>
但随后我在浏览器中收到此警告:
警告:
popoverType
标签上的未知道具。从元素中删除这些道具。
现在,我想我可以删除{...this.props}
零件并逐个插入所有原始道具,而无需自定义道具,但是这样我就失去了“淡入淡出”效果,这也是处理此问题的丑陋方法。有更简单的方法吗?
从 React v16开始
,您可以将自定义DOM属性传递给React组件。产生的问题/警告不再相关。更多信息。
这里最简单的解决方案是在将多余的东西prop
发送到Popover
组件之前简单地将其删除,并且有一个方便的解决方案。
export default class MyPopover extends Component {
// ...
render() {
let newProps = Object.assign({}, this.props); //shallow copy the props
delete newProps.popoverType; //remove the "illegal" prop from our copy.
return (
<Popover {...newProps} >
// ....
</Popover>
);
}
}
显然,您也可以(可能应该)在render()
函数之外创建该变量。
基本上,您可以将所需的任何props
内容发送到 自己的 组件,但必须先对其进行“清理”,然后再将其传递出去。在将所有react- bootstrap
组件作为属性传递给DOM之前,先清除掉所有“非法”道具,但是它不能处理 您
可能提供的任何自定义道具,因此,您必须自己做一些内部整理工作。
从15.2.0版本开始,React开始发出此警告。这是文档对此的说明:
如果您尝试使用React无法识别为合法DOM属性/属性的道具来渲染DOM元素,则会触发unknown-
prop警告。您应确保您的DOM元素没有漂浮的虚假道具。[…]
要解决此问题,复合组件应“消耗”用于复合组件而不是子组件的任何道具。
要进一步阅读,请 从官方反应网站上查看
此页面 。
我已经搜索了又搜索,除了我称之为“hack方法”的方法之外,找不到其他方法将自定义分类添加到自定义管理菜单中。 然后我注册我的帖子类型并确保它们使用 这可以工作,自定义帖子类型显示在我的自定义菜单中。 但是自定义分类法不接受同一属性的字符串,只接受true或false。 因此,要添加它,您必须创建一个子菜单页 这是一种“黑客”方式。 还有别的办法吗?如果不修改WordPress核心,我可以覆盖re
问题内容: 我正在研究启用AJAX的asp.net应用程序。我刚刚向Array.prototype添加了一些方法,例如 该解决方案对我有用,可以以“漂亮”的方式重用代码。 但是,当我测试了它与整个页面一起使用时,我遇到了问题。我们有了一些自定义的Ajax扩展程序,它们开始表现出意想不到的效果:某些控件在其内容或值上显示为“未定义”。 这可能是什么原因?我是否缺少修改标准对象原型的东西? 注意:我很
如果我创建一个继承JComponent的新类,我重写了JComponent的绘图Component(Graphics g)方法,通过使用g绘制一个圆圈,我应该修改什么才能使MouseListener仅在我单击组件的边界内时触发? 因为我在组件的构造函数中添加了setBounds(…)然后添加了一个MouseListener,但它会在我每次单击自定义组件所在容器中的任何位置时触发,而不仅仅是在我单击
我一直在尝试向<code>PYTHONPATH</code>添加一个自定义目录。我在Mac上使用bash,如果相关的话。这就是我所做的: < li> < li> 并保存 < li> 有两个问题: < li >当我在Python IDE中运行< code>sys.path时,目标目录仍然没有出现。 < li >当我在终端中启动Python并在那里运行< code>sys.path时,确实显示了目录,
我需要在窗格上有一个选择监听器和选择方法,以便在单击节点时能够监视并显示突出显示。 我做了以下操作: 这工作得很好 - 但是我无法再使用场景构建器,因为我的FXML引用了此而不是。我不确定如何将我的自定义窗格放入场景构建器。我已经看过其他问题,它们都是FXML和控制器的组合 - 这只是一个。 有没有人知道这样做的方法,或者在初始化时将< code>Pane换成< code > PaneWithSe
我是一个相当新的反应,这是一个我正在努力解决的问题。