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回答
-
同学你好 你说的是正确的 props 对象也是一个响应式对象(reacitve),你将它解构以后就会令其丧失响应性
00
相似问题