javascript - ChargeBee 直接结账 + React : Error

标签 javascript reactjs

我正尝试在 https://www.chargebee.com/checkout-portal-docs/drop-in-tutorial.html#implementation 之后将直接结账添加到 React SPA .我在呈现 View 的其余部分后动态添加 chargebee.js,然后调用 registerAgain()

componentDidMount() {
    const el = document.createElement('script');
    el.onload = () => {
        window.Chargebee.registerAgain();
        // this.setState({ chargebeeReady: true });
    };
    el.setAttribute('data-cb-site', 'derp-test');
    el.setAttribute('src', 'https://js.chargebee.com/v2/chargebee.js');
    document.body.appendChild(el);
}

render() {
    // [...]
    <a
        href="javascript:void(0)"
        data-cb-type="checkout"
        data-cb-plan-id="asdf-test"
    >
        Subscribe
    </a>
    // [...]
}

点击订阅时出现错误:

Uncaught TypeError: Cannot read property 'getCart' of null
    at t.a (event-binding.ts:24)
    at Function.value (chargebee.ts:46)
    at HTMLScriptElement.el.onload (Subscribe.js:23)

最佳答案

Chargebee 实例将在触发 DOMContentLoaded 事件时创建。由于您是异步加载它,因此不会创建实例。因此,您可以使用 Chargebee.init() 创建实例。

componentDidMount() {
    const el = document.createElement('script');
    el.onload = () => {
      window.Chargebee.init({
        "site": "derp-test"
      });
      window.Chargebee.registerAgain();
      // this.setState({ chargebeeReady: true });
    };
    el.setAttribute('src', 'https://js.chargebee.com/v2/chargebee.js');
    document.body.appendChild(el);
}

关于javascript - ChargeBee 直接结账 + React : Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51301563/

相关文章:

reactjs - 如何处理 React-Intl 消息的多次使用?

javascript - React - 条件 JSX 渲染

reactjs - 如何在将React模块转换为ES6类时解决 `this`

javascript - 可以在 jQuery 中调用常规 JavaScript 函数吗?

javascript - 我无法使 useEffect 在条件渲染上正确读取输入

javascript - 每 15 秒更改一次背景图像

javascript - 如何删除以某个字符串开头的类?

javascript - Material-UI React 无法识别 DOM 元素上的 `underlineStyle` 属性

javascript - 如何根据用户选择的 HTML 选项更改选择的背景颜色?

javascript - Nuxt、Webpack 和 mysql 包 : Error: Received packet in the wrong sequence