Vue + Vuex无法从状态获取值

时间:2020-10-27 18:54:05

标签: javascript arrays vue.js object vuex

我第一次使用Vuex。我在 $ store.state 中有两个数组,一个数组具有 cart [] 空数组,另一个数组具有 Lessons [] ,其内部具有课程参数它。

我成功地将其记录下来,并成功地将新课程添加到购物车 $ store.state.cart.join()提供了以下输出: | Item1 Name | Item1 Link | | Item1 foo | | Item1 bar | | Item2 Name | Item2 Link | | Item2 foo | | Item2 bar | ...

/> 那么我如何在另一个组件中获取此信息?我尝试这样做:

[{"lessonID":1003,"lessonTitle":"Lessons","lessonActivity":"English","lessonLocation":"Kensington","lessonPrice":"80","lessonAvailability":5}]

但是很遗憾,没有显示任何内容,也没有显示任何错误。只是为了确认我没有在计算属性中添加任何内容,也没有在<div class="col-7 bg-secondary" v-for="(lesson, id) in $store.state.cart" :key="lesson.id"> <div class="card" > <img :src="$store.state.cart.url" alt="" class="card-img-top img-fluid"> <div class="card-body"> <h3 class="card-title">{{ $store.state.cart[id].Title }}</h3> <ul class="list-group list-group-flush"> <li class="list-group-item">Subject: {{ $store.state.cart.Activity }} </li> <li class="list-group-item">Location: {{ $store.state.cart.Location }} </li> <li class="list-group-item">Price: {{ $store.state.cart.Price }} </li> <li class="list-group-item text-danger">Availability: {{ $store.state.cart.Availability }} </li> </ul> </div> 标签中添加任何内容。请帮助我:/

3 个答案:

答案 0 :(得分:1)

假设$store.state.cart.join()是正确的并返回您所说的数组中的单个对象,则可以将计算所得的属性添加为:

<script>
export default {
    computed: {
      lesson() {
      return $store.state.cart.join()[0]
    }
}
</script>

然后在模板中不需要v-for,但是您需要:

<h3 class="card-title">{{ lesson.Title }}</h3>

然后再次,我没有看到数组中的Title属性返回,但是我认为给出的代码是正确的。

答案 1 :(得分:0)

您是否注意到外部<div>没有关闭?

<div class="col-7 bg-secondary" v-for="(lesson, id) in $store.state.cart" :key="lesson.id">
                <div class="card" >
                    <img :src="$store.state.cart.url" alt="" class="card-img-top img-fluid">
                    <div class="card-body">
                        <h3 class="card-title">{{ $store.state.cart[id].Title }}</h3>
                        <ul class="list-group list-group-flush">
                        <li class="list-group-item">Subject: {{ $store.state.cart.Activity }} </li>
                        <li class="list-group-item">Location: {{ $store.state.cart.Location }} </li>
                        <li class="list-group-item">Price: {{ $store.state.cart.Price }} </li>
                        <li class="list-group-item text-danger">Availability: {{ $store.state.cart.Availability }} </li>
                        </ul>
                    </div>
</div>

答案 2 :(得分:0)

所以@catmal是正确的,但是我只需要显示$ store.state.cart.Activity
但是使用@catmal解释,然后按照我的定义写入参数

 computed: {
            cart() {
                return this.$store.state.cart;
            }
        }

然后 <div class="col-7 bg-secondary" v-for="car in cart"> <p>asd {{ car.lessonID }} </p> 这是错误的,因为例如我试图显示car.id(它在store.js中是这样定义的

感谢您的帮助