mor*_*ant 12 javascript vue.js vuejs3 vue-script-setup
喜欢标题,关于链接:
新的script setup(不含参考糖)
<template>
<TopNavbar title="room" />
<div>
{{ no }}
</div>
</template>
<script setup>
import TopNavbar from '@/layout/TopNavbar.vue'
import { defineProps, reactive } from 'vue'
defineProps({
no: String
})
const state = reactive({
room: {}
})
const init = async () => {
// I want use props in this
// const { data } = await getRoomByNo(props.no)
// console.log(data);
}
init()
</script>
<style>
</style>
Run Code Online (Sandbox Code Playgroud)
oli*_*bre 24
使用 Vue-3.1 及更高版本的功能的非常简单的答案:
CircleImage.vue<template>
<div class="px-4 w-8/12 sm:w-3/12">
<img :src="src" :alt="alt" class="border-none rounded-full h-auto max-w-full align-middle" />
</div>
</template>
<script setup>
const props = defineProps({
src: String,
alt: String,
})
</script>
Run Code Online (Sandbox Code Playgroud)
MyView.vue<template>
<div class="flex flex-wrap justify-center">
<CircleImage src="/file1.jpg" alt="one" />
<CircleImage src="/file2.svg" alt="two" />
</div>
</template>
<script setup>
import CircleImage from '@/components/CircleImage.vue'
</script>
Run Code Online (Sandbox Code Playgroud)
另请参阅文档:声明 props 或附加选项
Ric*_*ard 13
要使用道具,<script setup>您需要defineProps()使用组件道具选项作为参数进行调用,这定义了组件实例上的道具并返回一个reactive带有道具的对象,您可以按如下方式使用:
<template>
<TopNavbar title="room" />
<div>
{{ no }}
</div>
</template>
<script setup>
import TopNavbar from "@/layout/TopNavbar.vue";
import { defineProps, reactive } from "vue";
const props = defineProps({
no: String,
});
const { no } = toRefs(props);
const state = reactive({
room: {},
});
const init = async () => {
const { data } = await getRoomByNo(no.value);
console.log(data);
};
init();
</script>
Run Code Online (Sandbox Code Playgroud)
如果您使用打字稿,另一种方法是传递仅类型声明并从中推断道具类型。优点是你会得到更严格的类型安全,但你不能有默认值。
<template>
<TopNavbar title="room" />
<div>
{{ no }}
</div>
</template>
<script setup>
import TopNavbar from "@/layout/TopNavbar.vue";
import { defineProps, reactive } from "vue";
const props = defineProps<{
no: string,
}>();
const { no } = toRefs(props);
const state = reactive({
room: {},
});
const init = async () => {
const { data } = await getRoomByNo(no.value);
console.log(data);
};
init();
</script>
Run Code Online (Sandbox Code Playgroud)
现在可以使用仅限类型的道具的默认值:
interface Props {
msg?: string
}
const props = withDefaults(defineProps<Props>(), {
msg: 'hello'
})
Run Code Online (Sandbox Code Playgroud)
我读了《新script setup》并找到了答案
首先,使用变量保存defineProps
const props = defineProps({
no: String
})
Run Code Online (Sandbox Code Playgroud)
然后使用它
const init = async () => {
console.log(props.no);
}
Run Code Online (Sandbox Code Playgroud)
这是全部代码:
<template>
<TopNavbar title="room" />
<div>
{{ no }}
</div>
</template>
<script setup>
import TopNavbar from '@/layout/TopNavbar.vue'
import { defineProps, reactive, useContext } from 'vue'
const props = defineProps({
no: String
})
const state = reactive({
room: {}
})
const init = async () => {
console.log(props.no);
}
init()
</script>
<style>
</style>
Run Code Online (Sandbox Code Playgroud)
无需显式调用withDefaults
<script setup>
import { defineProps } from 'vue'
defineProps({
isOpen: {
type: Boolean,
default: true
}
})
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8311 次 |
| 最近记录: |