vue.jsのrender()を使う
ドキュメントの最初で見てから気になってたので。
成果物
render()
ってなんぞ?
Vue.jsの最初に読むドキュメントで真っ先に見かけたコードが以下だ。
// これはコンパイラが必要です Vue.createApp({ template: '<div>{{ hi }}</div>' }) // これはコンパイラ不要です Vue.createApp({ render() { return Vue.h('div', {}, this.hi) } })
テンプレートって何? コンパイルって何? などという疑問はある。しかしそれらは置いておく。
ここで注目するのはrender()
だ。なんぞこれ? さらに内容をみるとVue.h()
という謎のメソッドも使っている。ずっと気になっていた。しかしドキュメントの次の項からはもう使われていなかった。なので知る機会もなくモヤってた。
render()
- render(): 返した仮想ノードを描画する。
Vue.h()
- h(): 仮想ノードを返す。
コード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <script src="../vue.3.0.5.js"></script> <script src="./main.js"></script> </head> <body> <div id="app"></div> </body> </html>
const opt = { render() { return Vue.h('span', 'メッセージ'); } } Vue.createApp(opt).mount('#app');
リアクティブを使うことで変数にできる。
const opt = { setup() { const message = Vue.ref('描画するメッセージです。'); return { message }; }, render() { return Vue.h('span', this.message); } } Vue.createApp(opt).mount('#app');
所感
ふーん。こーゆーもんなんだ。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux