option api & compose api
<script setup>
import { ref, computed } from 'vue';
// 原始数据
const data = ref([
{ position: { x: 1, y: 2 } },
{ position: { x: 3, y: 4 } },
{ position: { x: 5, y: 6 } }
]);
// 数据转换函数
const convertData = (sourceData) => {
try {
const paths = sourceData
.filter(item => item?.position && typeof item.position === 'object')
.map(item => item.position);
return [{
paths: paths
}];
} catch (error) {
console.error('数据转换错误:', error);
return [{ paths: [] }];
}
};
// 计算属性
const convertTodata = computed(() => convertData(data.value));
// 更新数据的方法
const updateData = (newData) => {
data.value = newData;
};
</script>
<template>
<div class="p-4">
<h2 class="text-xl mb-4">转换后的数据:</h2>
<pre class="bg-gray-100 p-4 rounded">
{{ JSON.stringify(convertTodata, null, 2) }} // 使用 JSON.stringify 将 convertTodata 的结果格式化为 JSON 字符串并显示在页面
</pre>
</div>
</template>
<script>
export default {
name: 'DataConverter',
// ref() -> data()
data() {
return {
// const data = ref([...]) 变成:
data: [
{ position: { x: 1, y: 2 } },
{ position: { x: 3, y: 4 } },
{ position: { x: 5, y: 6 } }
]
}
},
// computed() -> computed: {}
computed: {
// const convertTodata = computed(() => ...) 变成:
convertTodata() {
return this.convertData(this.data);
}
},
methods: {
convertData(sourceData) {
try {
const paths = sourceData
.filter(item => item?.position && typeof item.position === 'object')
.map(item => item.position);
return [{
paths: paths
}];
} catch (error) {
console.error('数据转换错误:', error);
return [{ paths: [] }];
}
},
// const updateData = (newData) => { data.value = newData } 变成:
updateData(newData) {
this.data = newData;
}
}
};
</script>
<template>
<div class="p-4">
<h2 class="text-xl mb-4">转换后的数据:</h2>
<pre class="bg-gray-100 p-4 rounded">
{{ JSON.stringify(convertTodata, null, 2) }}
</pre>
</div>
</template>
<style scoped>
.p-4 {
padding: 1rem;
}
.text-xl {
font-size: 1.25rem;
line-height: 1.75rem;
}
.mb-4 {
margin-bottom: 1rem;
}
.bg-gray-100 {
background-color: #f3f4f6;
}
.rounded {
border-radius: 0.25rem;
}
</style>
主要转换规则
-
ref() 转换:
// Composition API const data = ref([...]) // Options API data() { return { data: [...] } }
-
computed() 转换:
// Composition API const result = computed(() => {...}) // Options API computed: { result() { return {...} } }
-
方法转换:
// Composition API const updateData = (newData) => { data.value = newData } // Options API methods: { updateData(newData) { this.data = newData } }
-
数据访问:
// Composition API data.value // Options API this.data