首页 > 解决方案 > 反应 loadStripe 方法不更新国家明智选择的元素形式

问题描述

我有针对不同国家/地区的不同条带帐户,因此在下拉选择中我想根据国家/地区明智选择更改条带结帐/元素形式,如图1所示

// public_key is coming from backend API according to countries dropdown selection
stripePromise = loadStripe(public_key)

因此,当我将 stripePromise 传递给条带元素时,它只会根据我从下拉列表中的第一个选择加载一次。

假设我从下拉列表中选择了英国,它显示了英国的结帐表格,如果我将国家/地区从英国更改为美国,则loadStripe 方法从未更新它的结帐表格并始终显示英国结帐表格。

那么如何根据不同的公钥重新加载我的条带元素呢?

PS:公钥总是根据国家选择更新。

PS:我正在使用 reactjs 条纹包 (@stripe/react-stripe-js": "^1.1.2")

<Elements stripe={stripePromise}>
  <CheckoutForm ref={this.child} />
</Elements>

在这种情况下我该怎么办,请知道吗?

标签: reactjs

解决方案


我终于自己得到了答案。

只需在条带的 Elements 组件中传递具有唯一 id 的 key 属性,它将根据最新的条带公钥每次重新渲染。

<Elements key={unique_key_number} stripe={this.state.loadstripe_promise}>
   <CheckoutForm ref={this.child} />
</Elements>

推荐阅读