반응형
Vue3의 통화 변환 기능
Vue3 프로젝트에서 convert() 함수를 구현하려고 합니다.
functions.js 파일로 "글로벌" 기본 함수를 저장합니다.
import axios from 'axios'
let functions = {}
functions.convert = async (amount, currencySetting) => {
const result = await getRate(currencySetting)
const rateData = result.data
const rate = rateData[`EUR_${currencySetting}`]
const converted = rate * amount
return Math.round(converted)
}
function getRate(currency) {
const apiKey = process.env.VUE_APP_CURRENCY_API_KEY
return axios.get(
`https://free.currconv.com/api/v7/convert?q=EUR_${currency}&compact=ultra&apiKey=${apiKey}`
)
}
export default functions
이렇게 컴포넌트 안에 있는 함수를 호출합니다.
<script>
import functions from '@/functions.js'
export default {
name: 'SltResult',
props: {
data: {
type: Object,
required: true
}
},
computed: {
formattedIrp() {
if (this.data.irp != 'n/a') {
const currencySetting = this.$store.state.currency.currency
if (currencySetting != 'EUR') {
const convertedIrp = functions.convert(this.data.irp, currencySetting)
return convertedIrp + currencySetting
} else {
return this.data.irp + '€'
}
}
return this.data.irp
}
}
}
</script>
하지만 제대로 작동하지 않고 보류 중인 Promise 결과만 표시됩니다.내가 뭘 잘못하고 있는지 누가 말해줄래?저는 Vue와 JS를 배우고 있습니다.
코드에는 두 가지 문제가 있습니다.
- 논리적인 문제계산된 속성 내에 ajax 콜이 있는 것은 의미가 없습니다.일반적인 메서드를 사용합니다.
- 구문 문제당신의.
convert
함수는 비동기입니다.즉, 값이 취득될 때까지 기다릴 필요가 있습니다.
다음은 사용 중인 코드 버전입니다.
<script>
import functions from '@/functions.js'
export default {
name: 'SltResult',
data: () => ({
formattedIrp: null,
}),
props: {
data: {
type: Object,
required: true
}
},
mounted() {
if (this.data.irp != 'n/a') {
const currencySetting = this.$store.state.currency.currency
if (currencySetting != 'EUR') {
functions.convert(this.data.irp, currencySetting).then(result => {
this.formattedIrp = result + currencySetting;
})
} else {
this.formattedIrp = this.data.irp + '€'
}
}
this.formattedIrp = this.data.irp
}
}
}
</script>
이것을 시험해 보세요.
const getRate = async (currency) => {
const apiKey = process.env.VUE_APP_CURRENCY_API_KEY
return (await axios.get(
`https://free.currconv.com/api/v7/convert?q=EUR_${currency}&compact=ultra&apiKey=${apiKey}`
))
}
언급URL : https://stackoverflow.com/questions/68032461/currency-converter-function-in-vue3
반응형
'programing' 카테고리의 다른 글
Vue.js 이벤트를 컴포넌트 체인으로 전파하는 방법 (0) | 2022.07.11 |
---|---|
IIS 서버에서 Vue 2 애플리케이션을 구성하는 방법 (0) | 2022.07.11 |
java.lang 수정 방법UnsupportedClassVersionError:지원되지 않는 major.minor 버전 (0) | 2022.07.10 |
필수 특성을 가진 vuejs-datepicker가 값 없이 전송됨 (0) | 2022.07.10 |
평면에 점을 3D로 투영하려면 어떻게 해야 합니까? (0) | 2022.07.10 |