[英]Rewriting JavaScript to React doesn't accept jQuery
我正在尝试重新编写我的旧 JavaScript 代码并使其适用于 React。
这背后的主要思想只是在我的第 3 方表单中包含一些外部数据。
这是我的旧 JS:
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
<script>
hbspt.forms.create({
portalId: 'myID',
formId: 'myID',
onFormSubmit: function() {
jQuery('input[name="TICKET.content"]').val(JSON.stringify(window.cart,undefined, 2)).change();
}
});
</script>
并试图让它在 React 中工作:
React.useEffect(() => {
const script = document.createElement('script');
script.src = 'https://js.hsforms.net/forms/v2.js';
document.body.appendChild(script);
script.addEventListener('load', () => {
if (window.hbspt) {
window.hbspt.forms.create({
portalId: 'myID',
formId: 'myID',
onFormSubmit: function() {
jQuery('input[name="TICKET.content"]').val(window.cart).change();
},
target: '#hubspotForm',
});
}
});
});
<div id="hubspotForm"></div>
尝试使用 react-hubspot-form
onSubmit={function (e) {
e.preventDefault();
const ticket = document.querySelector('input[name="TICKET.content"]');
const nativeInputValueSetter = Object.getOwnPropertyDescriptor( window.HTMLInputElement.prototype,'value').set;
nativeInputValueSetter.call(ticket, cart);
const evt = new Event('change', {bubbles: true,});
ticket.dispatchEvent(evt);}}
但是使用上面的代码,我收到未定义jQuery
错误。 有没有更好的方法来重写或者我能够以某种方式定义 jQuery?
为什么要使用 jQuery?
您可以使用react setters 在react js中触发onchange事件的最佳方法是什么
尝试
onFormSubmit: function(e) {
e.preventDefault(); // I assume you do not want to submit
const ticket = document.querySelector('input[name="TICKET.content"]');
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value").set;
nativeInputValueSetter.call(ticket , window.cart);
const evt = new Event('change', { bubbles: true});
ticket.dispatchEvent(evt);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.