如何在 Bigcommerce 优化结帐中触发对无线电输入的反应

How to trigger react for radio input in Bigcommerce optimized checkout

我正在尝试 select Bigcommerce 优化结帐中的特定送货选项 jquery 仅针对一个客户组。这适用于旧式结帐。在优化的结帐中,脚本 select 是正确的单选按钮,但不会更新运费。

if ($('.shippingOptions-container .form-checklist-header--selected:contains("UK Standard")').length) {
  $('.shippingOptions-container li:first-child').css("display", "none");
    $('.shippingOptions-container li input').prop('checked', false);   
    $('.shippingOptions-container li:last-child input:radio').prop('checked', true); // Select last option
    
  //Need to trigger react here?
}

作为参考,这里是 HTML 结帐送货选项:

<div class="shippingOptions-container form-fieldset">
  <div class="loadingOverlay-container">
    <ul class="form-checklist optimizedCheckout-form-checklist">
      <li class="form-checklist-item optimizedCheckout-form-checklist-item">
        <div class="form-checklist-header">
          <div class="form-field">
            <input name="shippingOptionIds.614eb9138f512" class="form-checklist-checkbox optimizedCheckout-form-checklist-checkbox" id="shippingOptionRadio-614eb9138f512-0c4f74daf3665ba298ee29fce61d0e38" type="radio" value="0c4f74daf3665ba298ee29fce61d0e38" checked="">
            <label for="shippingOptionRadio-614eb9138f512-0c4f74daf3665ba298ee29fce61d0e38" class="form-label optimizedCheckout-form-label">               <div class="shippingOptionLabel">
                 <div class="shippingOption shippingOption--alt">
                    <span class="shippingOption-desc">UK Standard</span>
                    <span class="shippingOption-price">£5.00</span>
                 </div>
              </div>
            </label>
          </div>
        </div>
      </li>
      <li class="form-checklist-item optimizedCheckout-form-checklist-item form-checklist-item--selected optimizedCheckout-form-checklist-item--selected">
        <div class="form-checklist-header form-checklist-header--selected">
          <div class="form-field">
            <input name="shippingOptionIds.614eb9138f512" class="form-checklist-checkbox optimizedCheckout-form-checklist-checkbox" id="shippingOptionRadio-614eb9138f512-6c03494e9505e15542ccfada6b0ac866" type="radio" value="6c03494e9505e15542ccfada6b0ac866">
            <label for="shippingOptionRadio-614eb9138f512-6c03494e9505e15542ccfada6b0ac866" class="form-label optimizedCheckout-form-label">
              <div class="shippingOptionLabel">
                <div class="shippingOption shippingOption--alt">
                  <span class="shippingOption-desc">Express</span>
                  <span class="shippingOption-price">£20.00</span>
                </div>
              </div>
            </label>
          </div>
        </div>
      </li>
    </ul>
  </div>
</div>

我无法更改任何 HTML,因为这是由 Bigcommerce 控制的结帐的一部分。

如何触发事件,使其更新与手动鼠标单击相同?

我已经非常广泛地研究了这件事,但没有找到关于如何在 BigCommerce 结帐应用程序中触发 React 状态更改的答案。

最后,我不得不采取的方法是使用 storefront checkout API 更新数据,然后触发页面刷新以确保 React 状态与结帐数据匹配。

而不是:

myElement.prop('checked', true);

尝试:

myElement.click();

前者设置了 HTML 输入的值,但是 React 在这个上下文中并不关心那个。使用 click() 模拟用户点击——它触发 onClick() 处理程序,这是 React 看到此更改所需的魔法。