<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<div id="app">
<p>作者:{{author}}</p>
<p>书名: {{title}}</p>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
const {reactive, toRef} = Vue;
const app = Vue.createApp({
setup(){
const book = reactive({
author: '孙鑫',
year: '2020',
title: 'Java无难事',
description: '让Java的学习再无难事',
price: '188'
})
let { author } = toRef(book.author);
let { title } = toRef(book.title);
return {
author,
title
}
}
})
const vm = app.mount('#app')
console.log(vm.title)
</script>
</html>
以上不对。
这样可以。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<div id="app">
<p>作者:{{author}}</p>
<p>书名: {{title}}</p>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
const {reactive, toRef} = Vue;
const app = Vue.createApp({
setup(){
const book = reactive({
author: '孙鑫',
year: '2020',
title: 'Java无难事',
description: '让Java的学习再无难事',
price: '188'
})
let author = toRef(book, 'author');
let title = toRef(book, 'title');
return {
author,
title
}
}
})
const vm = app.mount('#app')
console.log(vm.title)
</script>
</html>
let author = toRef(book, 'author');
let title = toRef(book, 'title');
const也成。
经测,有响应性了
Java无难事
10:05:32.666 vm.title='Java有难事‘
10:05:32.671 VM84:1 Uncaught SyntaxError: Invalid or unexpected token
10:05:46.662 vm.title="Java有难事"
10:05:46.670 'Java有难事'
Root
setup
author:"孙鑫" (Ref)
title:"Java有难事" (Ref)
toRefs的效果是一样的,就是表达转换形式不同。
Root
setup
author:"孙鑫" (Ref)
title:"Java有难事" (Ref)
let { author, title } = book;
这个这里没有toRefs,但是Vue处显示的效果还是一样的,就是console那里改不了,因为没有响应性。