首页 > 解决方案 > 用酶找到倒数第二个孩子

问题描述

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

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

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

提前致谢。

标签: javascripttestingjestjsenzyme

解决方案


@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 找到第二个(或第 n 个)节点

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

我希望这有帮助。


推荐阅读