当前位置: 首页 > 知识库问答 >
问题:

直接调用子组件会导致vuex中出现空值

吕承福
2023-03-14

我使用VueJS与webpack, vuex和vue路由器。我试图通过使用子组件中的计算功能来检查用户是否注册。计算的功能试图查看vuex中的用户属性。这工作正常,如果我打开我的Web应用程序通过这个URLhttp://localhost:8080。只有当我通过这个URL直接调用我的子组件时,才会出现问题:http://localhost:8080/meetup/id.它显示了一个错误:TypeError:不能读取null的属性“注册会议”,因为用户属性此时甚至不存在。

子组件计算代码:

computed: {
    userIsRegistered() {
      console.log(this.$store.getters.getUser)
      if (this.$store.getters.getUser.registeredMeetups.findIndex(meetupId => {return meetupId === this.meetupId;}) >= 0) {
        return true;
      } else { return false; }
    }
  }

用户属性在main中设置。Vue实例中的js:

new Vue({
  router,
  store,
  vuetify,
  render: function (h) { return h(App) },
  created () {
    this.initialFirebaseConfig();
    this.isUserAuthSignIn();
    this.$store.dispatch('loadMeetups');
  },
  methods: {
    initialFirebaseConfig() {
      const firebaseConfig = {
        ...
      };
      // Initialize Firebase
      firebase.initializeApp(firebaseConfig);
    },
    isUserAuthSignIn() {
        firebase.auth().onAuthStateChanged((user) => {
       
          if(user) {
            this.$store.dispatch('autoSignIn', user)
          }
        });
    }
  }

vue路由器代码:

{
    path: "/meetup/:id",
    name: "Meetup",
    props: true,
    component: () => import(/* webpackChunkName: "meetup" */ '../components/Meetup/Meetup.vue')
  },

目标:子组件的计算功能应该在main.js.的vue实例的功能之后运行

共有1个答案

鲁弘厚
2023-03-14
const user = this.$store.getters.getUser   
if (user && user.registeredMeetups.findIndex(meetupId => {return meetupId === this.meetupId;}) >= 0) {
    return true;
} else { 
    return false; 
} 
 类似资料:
  • 问题内容: 我在玩耍以获得更好的itertools感觉,所以我按数字对元组列表进行了分组,并试图得到结果组的列表。但是,当我将结果转换为列表时,会得到一个奇怪的结果:除了最后一组以外的所有内容都是空的。这是为什么?我以为将迭代器转换为列表效率不高,但永远不会改变行为。我猜列表是空的,因为遍历了内部迭代器,但是何时/何地发生? 问题答案: 从 文档中 : 返回的组本身就是一个与共享底层可迭代对象的迭

  • 问题内容: 我尝试从我的汇编代码中使用,这是一个最小示例,应仅打印到stdout: 我用 当我运行它时,它似乎可以正常工作:该字符串已打印出来,退出状态为: 但是当我尝试捕获文本时,很明显,某些功能无法正常工作: 该变量应具有值,但为空。 我的用法有什么问题? 问题答案: 使用 诸如printf之类的stdio函数后,请使用而不是原始syscall。 正如Michael解释的那样,可以动态链接C库

  • 问题内容: 以下示例代码生成一个简单的图,然后将其保存到“ fig1.pdf”,然后显示它,然后再次将其保存到“ fig2.pdf”。第一张图片看起来像预期的一样,但是第二张图片是空白的(包含白色正方形)。这到底是怎么回事?这条线显然弄乱了一些东西,但是我不知道该怎么办! 问题答案: 如果要在显示图形后保存图形,则需要保留图形实例。调用后不起作用的原因是当前数字已被重置。 跟踪幕后场景中哪些图形,

  • 我用VueX,store.js 注释列表组件: 注释信息组件: 备注信息组件无法从备注列表中获取第一个对象

  • KeyError:我使用的“记录”Lambd@Edge使用CloudFront请求原件。我可以成功通过测试。但是,在cloudwatch中,我看到了错误: 根据文件记录,“记录”应出现在事件中。https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html

  • 我需要在调用SFTPendpoint之前调用特定逻辑。考虑中的逻辑将在exchange中注入一些标头。当SFTP路由启动时,将使用这些标头。 因此,我试图在第一次计时时调用我的初始设置逻辑。它只会运行一次。某些标头将设置在exchange对象内。然后,在完成此操作后,应调用文件endpoint。标头应流经在这些endpoint之间传递的exchange对象。 我试着探索这个的直接组件。我试过这样的