Freecodecamp: [测试版]了解自封式JSX标签

创建于 2018-02-13  ·  4评论  ·  资料来源: freeCodeCamp/freeCodeCamp



挑战名称

了解有关自动关闭JSX标签的信息

问题说明


删除了注释并关闭了标签(第一次尝试丢失br标签,然后失败了,然后修复了),然后尝试失败了,但随后该项目在页面上呈现。

失败原因来自:提供的JSX元素应按原样呈现给ID为Challenge-node的DOM节点。
收到此错误时,项目已在预览中呈现。
似乎不是用质询节点ID而是用根ID呈现它。

添加的代码: ReactDOM.render(JSX, document.getElementById('challenge-node'));
测试通过,现在它在预览中呈现两次。

挑战指出:

修复代码编辑器中的错误,以便它是有效的JSX并成功进行编译。 确保您没有更改任何内容-您只需要在需要的地方关闭标签即可。

它没有提到需要将其附加到DOM,似乎表明您只需要调整换行和水平线即可。

解决方案:
需要添加方向以渲染到DOM并删除当前预览。
或者需要将预览调整为不在质询节点上,而不是在根ID之外。
或者还有我目前无法想到的另一种解决方案。

您的密码

Failed:
const JSX = (
  <div>
    <h2>Welcome to React!</h2><br />
    <p>Be sure to close all tags!</p>
    <hr />
  </div>
);

Passed: 
const JSX = (
  <div>
    <h2>Welcome to React!</h2><br />
    <p>Be sure to close all tags!</p>
    <hr />
  </div>
);
ReactDOM.render(JSX, document.getElementById('challenge-node'));

help wanted learn

所有4条评论

感谢您报告此问题! 我不认为我们应该添加说明以将组件呈现到DOM。

这将与所有其他React DOM元素挑战的行为不一致。 例如,在之前的挑战中,在JSX中定义HTML类,不需要ReactDOM.render即可通过挑战。

@TJBarrettJR之所以向代码编辑器中添加两次ReactDOM.render来渲染该组件两次,是由于在freeCodeCamp中渲染了种子代码的方式。 文件具有“主体”代码和“尾部”代码。 尾部位于用户代码的前面,通常包含ReactDOM.render行,因此产生两个渲染。

渲染线(如下所示)当前作为解决方案包含在种子中。

ReactDOM.render(JSX, document.getElementById('challenge-node'));

它也经过测试。 我将打开PR修改解决方案并删除测试。

有趣的是, challenge-node id保留用于将HTML元素呈现到DOM的练习; 我不确定它如何最终出现在种子文件中。

我已经在其他React挑战中检查了这个不必要的ReactDOM.render[ing] ; 没有其他人存在。

@ jkao1可以解释为什么渲染了两次,谢谢!

到目前为止,我还没有看到其他挑战带来的与众不同的地方,但是我仍在努力中。

此页面是否有帮助?
0 / 5 - 0 等级