无法读取未定义的vue.js的属性“ getters”

马塞尔·阿卜杜林(Marcel Abdullin)

有一个Form component.vue,它从getter获取事件对象并将其替换为v-model:

<template>
    <form @submit.prevent="submitForm">
        <div class="form-group row">
            <div class="col-10 d-flex">
                <input type="" class="title form-control" v-model="getEvent.title" placeholder="Название">
                <input type="" class="content form-control" v-model="getEvent.content" placeholder="Содержание">
                <input type="" class="event_date form-control" v-model="getEvent.event_date" placeholder="Дата">
                <input type="" class="email form-control" v-model="getEvent.email" placeholder="Email">
            </div>
            <div class="d-flex flex-column">
                <button class="btn btn-success mt-auto" >Создать</button>
            </div>
        </div>
    </form>
</template>

<script>
import { mapGetters, mapActions } from "vuex"

export default {
    computed: mapGetters(['getEvent']),
    methods: mapActions(['submitForm'])
}

但是,vue返回一个错误,指出未定义getter。store / index.js:

import Vue from 'vue';
import Vuex from 'vuex';


Vue.use(Vuex);

Date.prototype.getWeek = function () {
    var onejan = new Date(this.getFullYear(), 0, 1);
    var today = new Date(this.getFullYear(), this.getMonth(), this.getDate());
    var dayOfYear = ((today - onejan + 86400000) / 86400000);
    return Math.ceil(dayOfYear / 7)
}

export const store = new Vuex.Store({
    actions: {
        async getEvents(context) {
            var response = await fetch('http://127.0.0.1:8000/rest/');
            var data = await response.json()
            context('getEvents', data)
        },
        async createEvent(context) {
            await this.getEvents();
            await fetch('http://127.0.0.1:8000/rest/', {
                method: 'post',
                headers: {
                    'content-type': 'application/json'
                },
                body: JSON.stringify({ event: context.state.event })
            });
            await this.getEvents();
            context.commit('createEvent', context.state.event)
        },
        async editEvent(context) {
            await this.getEvents();
            await fetch(`http://127.0.0.1:8000/rest/${context.state.event.id}/`, {
                method: 'put',
                headers: {
                    'content-type': 'application/json'
                },
                body: JSON.stringify({ event: context.state.event })
            });
            await this.getEvents();
            context.state.event = {};
        },
        async deleteEvent(context) {
            await this.getEvents();
            await fetch(`http://127.0.0.1:8000/rest/${context.state.event.id}/`, {
                method: 'delete',
                headers: {
                    'content-type': 'application/json'
                },
                body: JSON.stringify({ event: context.state.event })
            });
            await this.getEvents();
        },


        submitForm(context) {
            if (context.state.event.id === undefined) {
                this.createEvent();
            } else {
                this.editEvent();
            }
        },


        isMonthEqualNow(object) {
            var event_date = new Date(object.event_date)
            var date_now = new Date()
            return event_date.getMonth() === date_now.getMonth()
        },
        isWeekEqualNow(object) {
            var event_date = new Date(object.event_date)
            var date_now = new Date()
            return event_date.getWeek() === date_now.getWeek()
        },
        isDayEqualNow(object) {
            var event_date = new Date(object.event_date)
            var date_now = new Date()
            return event_date.getDate() === date_now.getDate()
        },
        eventsByFilters(context) {
            var events = context.state.events
            if (context.state.search === '' && context.state.selected) {
                switch (context.state.selected) {
                    case 'month':
                        return events.filter(item => this.isMonthEqualNow(item))
                    case 'week':
                        return events.filter(item => this.isMonthEqualNow(item) && this.isWeekEqualNow(item))
                    case 'day':
                        return events.filter(item => this.isMonthEqualNow(item) && this.isWeekEqualNow(item)
                            && this.isDayEqualNow(item))
                    default:
                        return events
                }
            } else {
                events.filter(item => item.title.indexOf(context.state.search) !== -1)
            }
        }

    },
    mutations: {
        setEvents(state,events){
            state.events = events
        },
        createEvent(state, event){
            state.events.push(event)
        }
    },
    state: {
        events: [],
        event: {},
        selected: '',
        search: ''
    },
    getters: {
        eventsByFilters(state) {
            return state.events
        },
        getSearch(state){
            return state.search
        },
        getSelected(state){
            return state.selected
        },
        getEvent(state) {
            return state.event
        }
    },
});

而且我也有警告(警告在./src/main.js中

“在'./store'中找不到导出'默认'(导入为'商店')

main.js

import Vue from 'vue'
import App from './App.vue'
import  store  from './store';

Vue.config.productionTip = false


new Vue({
  render: h => h(App),
  store
}).$mount('#app')

而且组件本身不输出

踢巴托夫斯基

我看到的唯一问题是您的商店没有导出任何默认值

export const store = new Vuex.Store(...

但是,您的main.js用于导入默认

import store from 'src/store'

因此,请使用以下内容,希望您的问题得到解决

import { store } from './store';

请检查这些链接

  1. 在es6中导出const-vs-export-default

  2. 命名出口vs-默认出口在es6

一点建议

在以下几行中,我认为您不需要为此this.getEvents()使用await,因为它已经在其动作内部使用了await。

例如,

    await this.getEvents();
    await fetch('http://127.0.0.1:8000/rest/', {

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Vuex返回“ TypeError:无法读取未定义的属性'getters'”

来自分类Dev

无法访问Vuex模块的Getter-无法读取未定义的属性'getters'”

来自分类Dev

Vue JS无法读取未定义的属性

来自分类Dev

vue.js | TypeError:无法读取未定义的属性“ then”

来自分类Dev

Vue.js无法读取未定义的属性“ split”

来自分类Dev

Vue-Auth:无法读取未定义的属性“ beforeEach”

来自分类Dev

Vue无法读取未定义的属性“ $ root”

来自分类Dev

vue.js:属性或方法“”未定义,渲染错误:“TypeError:无法读取未定义的属性''”

来自分类Dev

Vue JS在获取请求时“无法读取未定义的属性'获取'”

来自分类Dev

Vue.js-加载API时无法读取未定义的属性'location'

来自分类Dev

vue.js“ TypeError:无法读取未定义的属性'path'”

来自分类Dev

“ TypeError:无法读取未定义的属性'get'”,Axios,Vue.JS

来自分类Dev

类型错误:无法读取未定义的 vue js 的属性“get”

来自分类Dev

vue.js 中的“无法读取未定义的属性‘color1’”错误

来自分类Dev

Vue.js:TypeError:无法读取未定义的属性“$router”?

来自分类Dev

无法读取未定义/未定义的属性

来自分类Dev

TypeError:无法读取未定义的属性“未定义”

来自分类Dev

无法读取未定义的node.js的属性“ length”

来自分类Dev

Ember.js:无法读取未定义的属性“ isHelperInstance”

来自分类Dev

无法读取未定义的node.js的属性'path'

来自分类Dev

Node.js无法读取未定义的属性“ on”

来自分类Dev

图表Js无法读取未定义的属性“长度”

来自分类Dev

无法读取Angular JS中未定义的属性成功

来自分类Dev

node.js:无法读取未定义的属性“ defaultEncoding”

来自分类Dev

Stripe.js-无法读取未定义的属性“ stripeToken”

来自分类Dev

无法读取未定义Three.js的属性“材料”

来自分类Dev

无法读取未定义的属性'__reactAutoBindPairs'-React.js

来自分类Dev

React.js-无法读取未定义的属性

来自分类Dev

无法读取未定义的属性“旋转”-Three.js

Related 相关文章

  1. 1

    Vuex返回“ TypeError:无法读取未定义的属性'getters'”

  2. 2

    无法访问Vuex模块的Getter-无法读取未定义的属性'getters'”

  3. 3

    Vue JS无法读取未定义的属性

  4. 4

    vue.js | TypeError:无法读取未定义的属性“ then”

  5. 5

    Vue.js无法读取未定义的属性“ split”

  6. 6

    Vue-Auth:无法读取未定义的属性“ beforeEach”

  7. 7

    Vue无法读取未定义的属性“ $ root”

  8. 8

    vue.js:属性或方法“”未定义,渲染错误:“TypeError:无法读取未定义的属性''”

  9. 9

    Vue JS在获取请求时“无法读取未定义的属性'获取'”

  10. 10

    Vue.js-加载API时无法读取未定义的属性'location'

  11. 11

    vue.js“ TypeError:无法读取未定义的属性'path'”

  12. 12

    “ TypeError:无法读取未定义的属性'get'”,Axios,Vue.JS

  13. 13

    类型错误:无法读取未定义的 vue js 的属性“get”

  14. 14

    vue.js 中的“无法读取未定义的属性‘color1’”错误

  15. 15

    Vue.js:TypeError:无法读取未定义的属性“$router”?

  16. 16

    无法读取未定义/未定义的属性

  17. 17

    TypeError:无法读取未定义的属性“未定义”

  18. 18

    无法读取未定义的node.js的属性“ length”

  19. 19

    Ember.js:无法读取未定义的属性“ isHelperInstance”

  20. 20

    无法读取未定义的node.js的属性'path'

  21. 21

    Node.js无法读取未定义的属性“ on”

  22. 22

    图表Js无法读取未定义的属性“长度”

  23. 23

    无法读取Angular JS中未定义的属性成功

  24. 24

    node.js:无法读取未定义的属性“ defaultEncoding”

  25. 25

    Stripe.js-无法读取未定义的属性“ stripeToken”

  26. 26

    无法读取未定义Three.js的属性“材料”

  27. 27

    无法读取未定义的属性'__reactAutoBindPairs'-React.js

  28. 28

    React.js-无法读取未定义的属性

  29. 29

    无法读取未定义的属性“旋转”-Three.js

热门标签

归档