使用ReactDOM提交React表单:不重新渲染组件

时间:2018-12-05 17:48:24

标签: javascript reactjs react-dom

我正在尝试使用Jest和ReactDOM以编程方式测试React表单提交。

以下是测试代码的片段:

var mycomp = <MyForm />;
var container = document.createElement('div');
ReactDOM.render(mycomp, container);

container.querySelector('#Project').value = "Test Project";
container.querySelector('#Description').innerHTML= "Test description";

// Submit the form
// (See: https://github.com/facebook/react/issues/6796#issuecomment-288350025)
container.querySelector('form').dispatchEvent(new Event('submit'));        

expect(container.querySelector('#successMessage')).not.toBeNull(); // this fails!

在commit函数处理程序中,我更新状态,然后重新渲染后,应添加以“ successMessage”作为id的span元素。
不幸的是,提交处理程序被触发了(我可以在控制台上看到它的日志),但是成功消息范围没有显示。
为什么会这样呢?使用ReactDOM渲染的React组件上的更新不应该触发新的渲染并更新页面吗?

编辑:在此处看到问题的最小复制内容(失败的Jest测试在底部,已注释掉)https://codepen.io/pviotti/pen/YdKKpw

0 个答案:

没有答案