我们使用Backbone + ReactJS包来构建客户端应用程序.严重依赖臭名昭着的valueLink我们通过自己的包装器将值直接传播到模型,该包装器支持ReactJS接口以进行双向绑定.
现在我们遇到了这个问题:
我们有jquery.mask.js插件以编程方式格式化输入值,因此它不会触发React事件.所有这些都会导致模型从用户输入接收未格式化的值并从插件中忽略格式化的值时导致这种情况.
React似乎有很多依赖于浏览器的事件处理策略.是否有任何常见的方法来触发特定DOM元素的更改事件,以便React会听到它?
我的任务是抓取使用React构建的网站.我正在尝试填写输入字段并使用javascript注入页面提交表单(在移动设备中使用selenium或webview).这就像每个其他网站+技术的魅力,但React似乎是一个真正的痛苦.
所以这是一个示例代码
var email = document.getElementById( 'email' );
email.value = 'example@mail.com';
Run Code Online (Sandbox Code Playgroud)
我在DOM输入元素上更改了值,但React不会触发change事件.
我一直在尝试各种不同的方法来让React更新状态.
var event = new Event('change', { bubbles: true });
email.dispatchEvent( event );
Run Code Online (Sandbox Code Playgroud)
徒劳无功
var event = new Event('input', { bubbles: true });
email.dispatchEvent( event );
Run Code Online (Sandbox Code Playgroud)
不工作
email.onChange( event );
Run Code Online (Sandbox Code Playgroud)
不工作
我无法相信与React的互动变得如此困难.我非常感谢任何帮助.
谢谢