繁体   English   中英

使用React JS遍历DOM

[英]Traversing the DOM with React JS

我正在尝试测试React JS生成的这段HTML:

<div class="media-img">
    <img src='images-name.jpg' />
</div>

如您所见,该图像没有类名,我不能穿上它。 我正在使用Jasmine尝试测试图像的src是否正确。 但是我似乎无法掌握React中的image元素。 在jQuery中,这真的很容易,我可以使用$('。media-img img'),有没有办法在React中遍历DOM?

这是我到目前为止的内容:

var React = require('react'),
    TestUtils = React.addons.TestUtils,
    Component = require('component'),
    renderedComponent;

function renderComponent(data) {
    data = data || {};
    renderedComponent = TestUtils.renderIntoDocument(
        React.createElement(Component, data)
    );
}

var imageURL = 'http://lorempixel.com/g/400/200/',
    image,
    imageSection;

renderComponent({
    src: imageURL
});

imageSection = TestUtils.scryRenderedComponentsWithType(renderedComponent, 'media-img');
image = TestUtils.findRenderedDOMComponentWithTag(imageSection, 'img');

expect(image.src).toBe(imageURL);

但这不起作用。 似乎无法像我在底部尝试的那样将React组件传递给另一个组件。 那么如何遍历虚拟DOM?

我找到了答案。 我没有尝试将React组件传递到另一个组件中以测试呈现的DOM的一个子部分,而是查看了整个呈现的DOM中的“ img”。 通常,由于渲染的DOM可能很大且充满'img'标签,因此效率会有些低下,但是由于这是数据有限的单元测试,因此渲染的DOM很小且可预测。 我用这个:

image = TestUtils.findRenderedDOMComponentWithTag(renderedContributor, 'img');

然后,我根本不需要'imageSection'变量。 然后,我可以调用DOM节点,然后通过添加以下内容来查看其“ src”:

image.getDOMNode().src;

因此,我完整的修改后的代码如下所示:

var React = require('react'),
    TestUtils = React.addons.TestUtils,
    Component = require('component'),
    renderedComponent;

function renderComponent(data) {
    data = data || {};
    renderedComponent = TestUtils.renderIntoDocument(
        React.createElement(Component, data)
    );
}

var imageURL = 'http://lorempixel.com/g/400/200/',
    image;

renderComponent({
    src: imageURL
});

image = TestUtils.findRenderedDOMComponentWithTag(renderedComponent, 'img');

expect(image.getDOMNode().src).toBe(imageURL);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM