我正在尝试重新编写我的旧javascript代码,并使其适用于react。
这背后的主要思想就是在我的第三方表单中包含一些外部数据。
这是我的旧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>
试着用点的形式
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?
1条答案
按热度按时间kyxcudwk1#
为什么要使用jquery?
您可以使用react setters在react js中触发onchange事件的最佳方式是什么
尝试