当前位置: 首页 > 面试题库 >

比较两个组件-组件X是组件A的实例吗

胡鸿禧
2023-03-14
问题内容

我有一个通用组件,该组件将其子组件映射为仅过滤某种类型的子组件,如下所示。

但是,使用该属性type只是一个猜测,我找不到记录。不仅如此,对其进行日志记录表明它是一个函数-
无法执行。最重要的是,使用Browserify时需要解决几个问题。

另一种选择是读取child.prototype.displayName。但这也感觉不对。

问题:基本上,我正在寻找一种比较两个ReactJS组件是否相等的可靠方法。

(更新:毕竟还算不错)

var Foo = React.createClass({
    render: function() {
        return <div>Foo</div>;
    }
});

var Bar = React.createClass({
    render: function() {
        return <div>Bar</div>;
    }
});

var Main = React.createClass({
    render: function() {
        var filteredChildren = [];

        filteredChildren = React.Children.map(function(child) {
            if (child.type === Foo.type) {
                return child;
            }
        });

        return (
            <div>
                {filteredChildren}
            </div>
        );
    }
});

React.render(<Main><Foo /><Bar /></Main>, document.body);

问题答案:

我认为您的例子是正确的。

实际上,在React 0.12中child.type === Foo.type是唯一可行的比较。
这与React
0.12正在弃用包装函数有关。

当0.13输出时,child.type其本身将为Foo

Nitpick:请不要使用this.props.children.map,当孩子少于两个时,这将不起作用。
使用React.Children.map代替。



 类似资料:
  • 本文向大家介绍JS组件中bootstrap multiselect两大组件较量,包括了JS组件中bootstrap multiselect两大组件较量的使用技巧和注意事项,需要的朋友参考一下 两个这种组件,大体样式和功能基本相同,本文就来带领大家看看这两个组件的用法。 一、组件说明以及API 1、第一个组件——multiple-select。这个组件风格简单、文档全、功能强大。但是觉得它选中的效果

  • 问题内容: 我有这个间隔,当前每5秒执行一次ajax请求。我对声明有疑问。我的代码总是输入它,并且两个json值完全相同,为什么它认为它们不同? 编辑 这是控制台输出(虚线是分隔请求,它不在实际输出中) 问题答案: 不能保证以相同的方式序列化JSON对象,也不能保证属性以相同的顺序进行序列化,使用并不是测试对象相等性的好方法。 一个更好的例子是这样的函数(前一段时间在互联网上找到,希望我能感谢原始

  • 我有一个简单的javascript问题,我真的需要一些帮助!我正在尝试弄清楚如何在数组之间比较元素,以及在下一个循环中再次比较较大的元素。假设我们有数组A和数组B。 我的问题是,在比较索引处的元素之后,我希望在下一个循环周期中比较较大的元素。 如果A=[5,7,4],B=[2,8,5] 在第一个循环中,5与2进行比较,2较小,因此会发生一些事情。在下一个循环周期中,我希望5与8进行比较,而对于现在

  • 比较两个NumPy数组是否相等的最简单方法是什么(其中相等定义为:A=B iff,用于所有索引i:

  • 本文向大家介绍JS中比较两个Object数组是否相等方法实例,包括了JS中比较两个Object数组是否相等方法实例的使用技巧和注意事项,需要的朋友参考一下 一、问题 在js中是不能直接用“==”或者“===”来计算两个数组是否相等的,那么就需要对数组的值进行比较; 二、次解决方案 对于比较两个数组次要的方法有如下几种,为什么说是次要解决方案呢?因为它不能真正称之为对两个数组的对比。 1. 把两个数

  • 我试图建立一个函数,检查一个单词或文本是否是回文。要做到这一点,它拆分文本,使每个字母都是一个新数组的元素,它去掉空白,并建立反向数组。然后检查两个数组中处于相同位置的每个元素是否相等。如果不是,则返回false,如果是,则返回true。这里的函数是: 我不知道出了什么问题,但是不管我传递给函数什么单词或文本,函数似乎都在返回一个真值。那有什么不好?