javascript - Vuex 显示错误的 reduce 结果
问题描述
我的 Vuex 商店中有两个吸气剂
getters: {
itemCount: state => state.lines.reduce((total,line)=> total + line.quantity,0),
totalPrice: state => state.lines.reduce((total,line) => total +
(line.quantity*line.product.price),0)
},
他们在以下组件中显示了减少的结果
<template>
<div class="float-right">
<small>
Your cart:
<span v-if="itemCount > 0">
{{ itemCount}} item(s) {{ totalPrice | currency}}
</span>
<span v-else>
(empty)
</span>
</small>
<b-button variant="dark"
to="/cart"
size="sm"
class="text-white"
v-bind:disabled="itemCount === 0">
<i class="fa fa-shopping-cart"></i>
</b-button>
</div>
</template>
<script>
import {mapGetters} from "vuex";
export default {
name: "cart-summary",
computed: {
...mapGetters({
itemCount: "cart/itemCount",
totalPrice: "cart/totalPrice"
})
}
}
</script>
<style scoped>
</style>
第二个(totalPrice) - 按预期工作并返回购物车中的总价格。第一个显示了一些奇怪的结果:
如果我的购物车有 3 件产品 A 总计将显示 03 如果我的购物车有 3 件产品 A 和 2 件 B 总计将显示 032
解决方案
Javascript,作为一种非类型化语言,喜欢强制事物,这使得数学有时变得很有趣。1 + "1" === "11"
, 例如。
这很可能line.quantity
是一个字符串,所以如果你尝试parseInt(line.quantity)
,它会返回你寻找的实际值。
推荐阅读
- angular - 在 Angular 11 库中添加扩展方法
- c# - ThrowForNonSuccess 在使用 await 时导致“无法对空引用执行绑定”
- reactjs - Gatsby 404 Page 抱怨谷歌地图
- c++ - QByteArray indexOf 已弃用?
- flutter - 如何在飞镖中调用采用 Map 类型参数的函数?
- r - 如何在我想用来进行连接的 R 函数中传递参数
- python - 为什么在包含的文件存在时我会得到未解析的引用?
- sql - 如何在 SQL 中加入来自 3 个不同表的 3 个列(不合并/合并数据)?
- ios - SwiftUI TabBar TabItems 在 iOS 14.3 中处于非活动状态时隐藏
- spring-cloud-gateway - 如何在 Spring Cloud Gateway 过滤器中读取和修改请求正文?谁能帮我