想请教大家,一个关于vue3写法的问题?谢谢大家?

<template>

<div>

<!-- 右边菜单 -->

<div class="right-window" :class="{ hide: !showMenu }">

<!-- 头部 -->

<div class="site" @click="click_index">

<image src="../static/images/shou_logo.jpg" style="width: 316rpx;height: 62rpx;"></image>

</div>

<!-- 导航 -->

<template v-if="store.categorys.length > 0">

<div style="display: flex;margin: 30rpx;padding: 15rpx;">

<el-select v-model="value" filterable placeholder="请输入内容" @change='change'>

<el-option

v-for="item in options"

:key="item.value"

:label="item.label"

:value="item.value">

</el-option>

</el-select>

</div>

<right-menu @select="select" :activeKey="activeKey" />

</template>

<!-- 底部 -->

<div class="footer">

<a class="link" href="https://beian.miit.gov.cn/" target="_blank" type="primary">@{{ siteYear }}

{{ siteNumber }}</a>

</div>

</div>

<!-- 小屏幕显示菜单按钮 -->

<match-media v-if="!showMenu" :max-width="956">

<div class="left-icon">

<Icon color="#a6a6a6" :size="28">

<ChevronCircleLeft @click="showRightMenu" />

</Icon>

</div>

</match-media>

<!-- 抽屉遮罩 -->

<bg-cover :show="showCover && showMenu" :top="60" @click="showMenu = false" />

</div>

</template>

<script>

export default {

data() {

return {

options: [],

value: ''

}

},

methods: {

change(e){

router.navigateTo(`index/index?category=${e}`)

},

click_index(){

router.navigateTo(`index/index?category=常用功能`)

}

},

mounted() {

call('category_search', {

}).then(res => {

this.options = res.data.sort((a, b) => {

if (a.value.startsWith("如何")) {

return -1;

}

if (b.value.startsWith("如何")) {

return 1;

}

return a.value < b.value ? -1 : 1;

})

console.log(res.data,9999)

})

const device = navigator.userAgent

console.log(device,999)

if (device.indexOf('iPad') > -1) {

// ipad

this.is_pc = false

} else if (device.indexOf('Android') > -1 || device.indexOf('iPhone') > -1) {

// 手机

this.is_pc = false

console.log(this.showMenu,'showMenu')

this.showMenu = true

this.showCover = true

console.log(this.showMenu,'showMenu')

// this.is_pc = true

} else {

// 电脑

this.is_pc = true

// this.is_pc = false

}

}

}

</script>

<script setup>

import {

onLoad

} from '@dcloudio/uni-app'

import {

useStore

} from '@/stores/index.js'

import {

Icon

} from '@vicons/utils'

import {

ChevronCircleLeft,

Search

} from '@vicons/fa'

import rightMenu from './components/rightMenu.vue'

import {

siteName,

siteYear,

siteNumber

} from '@/config/site.js'

const store = useStore()

const category = ref('')

uni.$on('setRightStyle', obj => {

if (obj.type === 'showRightMenu') {

showMenu.value = obj.data.showMenu

showCover.value = obj.data.showCover

}

if (obj.type === 'putRightMenuActiveKey') {

activeKey.value = obj.data

}

onLoad(options => {

category.value = options.category;

})

})

const showMenu = ref(false)

const showCover = ref(false)

const activeKey = ref('')

const keywords = ref('')

const showRightMenu = () => {

showMenu.value = true

showCover.value = true

}

const select = () => {

if (showCover.value) {

showMenu.value = false

}

}

</script>

<script setup> 里有showMenu 和 showCover

我想判断是否是手机端,如果是手机端 就在mounted 里写
this.showMenu = true
this.showCover = true

但是我发现这样没有生效,请问如何改这种值?


回答:

既然使用了setup为啥还要混着options的写法呢,建议直接在setup中写mounted的逻辑

import { onMounted } from 'vue'

onMounted(() => {

if (手机端) {

showMenu.value = true

showCover.value = true

}

})


回答:

<script setup>中声明的值不与 option 写法中的 data 互通,只能在其中一种写法中修改

以上是 想请教大家,一个关于vue3写法的问题?谢谢大家? 的全部内容, 来源链接: utcz.com/p/933458.html

回到顶部