props中的数据响应式

来源:6-11 Vuex 整合当前应用

yangdy

2021-03-11

<template>
  <nav class="navbar navbar-dark bg-dark justify-content-between mb-4 px-4">
    <!-- Navbar content -->
    <router-link class="navbar-brand" to="/">者也专栏</router-link>
    <ul v-if="!isLogin" class="list-inline mb-0">
      <li class="list-inline-item">
        <router-link to="/login" class="btn btn-outline-light my-2"
          >登录</router-link
        >
      </li>
      <li class="list-inline-item">
        <router-link to="/about" class="btn btn-outline-light my-2"
          >注册</router-link
        >
      </li>
    </ul>
    <ul v-else class="list-inline mb-0">
      <li class="list-inline-item">
        <DrapDown :title="`您好 ${name}`">
          <DrapDownItem>
            <template v-slot:drapDownItemName>
              <a href="#" class="dropdown-item">新建文章</a>
            </template>
          </DrapDownItem>
          <DrapDownItem disabled>
            <template v-slot:drapDownItemName>
              <a href="#" class="dropdown-item">编辑资料</a>
            </template>
          </DrapDownItem>
          <DrapDownItem>
            <template v-slot:drapDownItemName>
              <a href="#" class="dropdown-item">退出登录</a>
            </template>
          </DrapDownItem>
        </DrapDown>
      </li>
    </ul>
  </nav>
</template>
<script lang="ts">
import { defineComponent, PropType } from 'vue';
import DrapDown from './DrapDown.vue';
import DrapDownItem from './DrapDownItem.vue';
export interface UserProps {
  isLogin: boolean;
  id?: number;
  name?: string;
}
export default defineComponent({
  name: 'GlobalHeader',
  components: {
    DrapDown,
    DrapDownItem,
  },
  props: {
    user: {
      type: Object as PropType<UserProps>,
      required: true,
      default: {},
    },
  },
  setup(prop) {
    console.log(prop);
    return {
      ...prop.user,
    };
  },
});
</script>

这样解构完props中的user数据发生了变化,但不是响应式数据,只能直接user.isLogin吗?老师

写回答

1回答

张轩

2021-03-12

同学你好 你说的是正确的 props 对象也是一个响应式对象(reacitve),你将它解构以后就会令其丧失响应性

0
0

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程