# setup() 函數、ref、reactive ## ==setup 起手式== * 我們使用setup基本的架構上會使用==Vue.createApp== 開啟應用程式,並mount到指定HTML架構上 ```javascript= <div id="app"></div> <script src="./js/vue.js"></script> <script> const appTo ={ // setup 起手式 setup() { return (); } } Vue.createApp(appTo).mount("#app"); </script> ``` ## ==ref 使用== * 在基本使用上 我們透過 {{ }} return 一個變數顯示,但使用setTimeout()函式會無法使用 ```javascript= <div id="app"> //顯示變數 <h1> {{text}} </h1> </div> <script src="./js/vue.js"></script> <script> const App = { setup() { let text = "Bryan"; setTimeout(() => { text = "Mars" }, 1000); return { text }; }, }; Vue.createApp(App).mount("#app"); </script> ``` * 改成 const 並改用 ref 封裝起來,在改動的變數中需要加入 ref物件包裝後的value取得值 ```javascript= const App = { setup() { //改成const 並改用ref封裝起來 const text = Vue.ref("Bryan"); setTimeout(() => { //在改動的變數中需要加入 ref物件包裝後的value取得值 text.value = "Mars" console.log(text); }, 1000); return { text }; }, }; Vue.createApp(App).mount("#app"); ``` vue包裝後的text中 顯示的值![](https://i.imgur.com/LUInQg9.png) * 解構式用法,方便ref 沿用的方式 ```javascript= //解構式用法,方便ref 沿用的方式 const { ref } = Vue; const App = { setup() { //改成ref 沿用 const text = ref("Bryan"); setTimeout(() => { //在改動的變數中需要加入 ref物件包裝後的value取得值 text.value = "Mars" console.log(text); }, 1000); return { text }; }, }; Vue.createApp(App).mount("#app"); ``` ## ==reactive== <div class="alert alert-danger text-center"> reactive 只能接受物件與陣列的形式 </div> ```javascript= //解構式用法,使用reactive const { reactive } = Vue; const App = { setup() { //改成ref 沿用 const message = reactive( { name : "Bryan" }); return { message, }; }, }; Vue.createApp(App).mount("#app"); ``` ## ==選擇 ref ? 還是 reactive?== ![](https://i.imgur.com/3F3LZcJ.png)
{"metaMigratedAt":"2023-06-16T11:28:54.217Z","metaMigratedFrom":"YAML","title":"setup() 函數、ref、reactive","breaks":true,"contributors":"[{\"id\":\"c05b36ac-d774-4e45-8fc3-5e50c9be5123\",\"add\":2220,\"del\":3}]"}
Expand menu