vue.js - 将条带导入 Vue.js 组件
问题描述
https://alligator.io/vuejs/stripe-elements-vue-integration/
在这个网站上,它说我们需要在 index.html 文件中导入带有 script 标签的文件,我这样做了,但我注意到我收到了一个 js 错误。
只有当我直接在组件内导入脚本时,错误“'Stripe' is not defined”才消失。
<template>
<div>
</div>
</template>
<script src="https://js.stripe.com/v3/"></script>
<script>
export default {
name: 'component',
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>
我不想直接在我的组件中导入它,因为它不干净,我该怎么办?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<script src="https://js.stripe.com/v3/"></script>
<title>vue-app</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
解决方案
派对迟到了,但这里有一个适合我的解决方案
您的index.html
文件看起来不错:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<script src="https://js.stripe.com/v3/"></script>
<title>vue-app</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
然后在要使用的组件中,可以通过window对象访问stripe,并设置可发布键。这可以在方法中本地完成,也可以在组件中全局完成,如下所示:
<script>
const stripe = window.Stripe(process.env.VUE_APP_STRIPE_PK)
export default {
data() {
return {
// ...
}
},
methods: {
async confirmPayment() {
const paymentResult = await stripe.confirmCardPayment(this.clientSecret, {
receipt_email: 'email@example.com',
})
console.log('paymentResult:', paymentResult)
},
},
}
</script>
推荐阅读
- scala - Spark Dataframes 多个 JOIN
- c# - 用 C# 中的相应 html 替换多个引号标签
- bioinformatics - Snakemake 在两个不同的通配符子集上发布运行规则
- reactjs - 重新渲染组件后如何使酶预期错误
- c# - DateTime.TryParse 似乎正在丢失原始时区信息并转换为服务器时间
- python - 在 Python 中从给定的最大位数和小数位数创建最大可能的十进制数
- java - 将自定义 RequestBody 从 POST 请求发送到 java 中的外部 GET 请求
- python - 使用 Python 处理查询中的 BigQuery 错误
- javascript - 如何刮掉面包屑内部文本并将其用作我的 Google 标记管理器中的变量
- artificial-intelligence - 哪些个体应该在遗传算法中交叉和/或变异?