【问题标题】:Find second to last child with Enzyme用酶找到倒数第二个孩子
【发布时间】:2020-07-05 19:50:56
【问题描述】:

如何查找 Enzyme 的 find() 方法返回的倒数第二个子节点? 最后一个孩子可以用 .last() 找到,但是之前的那个呢?

我知道它不会返回一个数组,但我希望做的是这样的:

const elementsArray = wrapper.find('element');
const secondToLastElement = elementsArray.at(elementsArray.length - 1);

提前致谢。

【问题讨论】:

    标签: javascript testing jestjs enzyme


    【解决方案1】:

    @EIDuderino

    理想情况下,您的解决方案也应该通过从总长度中减去 2 来工作,因为 '.find' 返回可迭代对象。

    请在下面找到更新:

    const elementsArray = wrapper.find('element');
    const secondToLastElement = elementsArray.at(elementsArray.length - 
        2);
    

    另外,我相信我们可以使用以下解决方案来查找计数,然后使用“.at”来查找倒数第二个元素。这不是理想的解决方案,但可以提供帮助。

    let totalElements = 0;
    component.find('MyInnerComponent').forEach( (node) => { 
        totalElements++; });
    

    一旦我们有了总数,我们就可以使用您建议的代码。

    以下是可能有助于添加答案的链接

    React Enzyme find second (or nth) node.

    我认为您也可以使用“.get”,如果这有助于该场景。 不过,我相信您已经阅读过酶文档,但将链接分别放在“.get”和“.at”上以供参考。

    我希望,这会有所帮助。

    【讨论】:

    • 感谢@Hemant Kumar。问题不在于知道位置后如何找到元素,而在于如何从末尾开始找到它。比如:“不管有多少,在最后一个之前给我。”
    • 嗨,我认为我们可以通过在 find() 上使用 '.forEach' 来找到计数,例如:component.find('MyInnerComponent').forEach( (node) => { count++; }) ;然后找到倒数第二个项目。如果这有帮助
    • 完美。这个想法奏效了!所以基本上:对于每个元素,将计数加 1,然后使用计数从最后一个元素开始计数。您能否将您的评论添加为答案,以便我将其标记为解决问题?谢谢。
    猜你喜欢
    • 2013-09-09
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多