Vue3自定义指令
hi,我是温新,一名PHPer
有些时候需要操作DOM元素该怎么办?如有一个input
框,当页面加载完成input
获得焦点。
定义指令:app.directive(自定义指令名,{})
使用自定义指令:v-自定义指令名
全局自定义指令
<span style="box-sizing: border-box;padding-right: 0.1px"><span class="cm-tag cm-bracket" style=""><</span><span style="">div</span> <span style="">id</span>=<span style="">"app"</span><span class="cm-tag cm-bracket" style="">></</span><span style="">div</span><span class="cm-tag cm-bracket" style="">></span></span><br></br><span style="padding-right: 0.1px; box-sizing: border-box;"></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span class="cm-tag cm-bracket" style=""><</span><span style="">script</span><span class="cm-tag cm-bracket" style="">></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">const</span> <span style="">app</span> <span style="">=</span> <span style="">Vue</span>.<span style="">createApp</span>({</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">template</span>:<span style="">`<input type="text" v-focus >`</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> });</span><br></br><span style="padding-right: 0.1px; box-sizing: border-box;"></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">// 全局自定义指令</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">app</span>.<span style="">directive</span>(<span style="">'focus'</span>, {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">// 当被绑定的元素挂载到 DOM 中时</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">mounted</span>(<span style="">el</span>){</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">el</span>.<span style="">focus</span>();</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> }</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> });</span><br></br><span style="padding-right: 0.1px; box-sizing: border-box;"></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">app</span>.<span style="">mount</span>(<span style="">'#app'</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span class="cm-tag cm-bracket" style=""></</span><span style="">script</span><span class="cm-tag cm-bracket" style="">></span></span>
局部自定义指令
<span style="box-sizing: border-box;padding-right: 0.1px"><span class="cm-tag cm-bracket" style=""><</span><span style="">div</span> <span style="">id</span>=<span style="">"app"</span><span class="cm-tag cm-bracket" style="">></</span><span style="">div</span><span class="cm-tag cm-bracket" style="">></span></span><br></br><span style="padding-right: 0.1px; box-sizing: border-box;"></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span class="cm-tag cm-bracket" style=""><</span><span style="">script</span><span class="cm-tag cm-bracket" style="">></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">// 局部自定义指令</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">const</span> <span style="">directives</span> <span style="">=</span> {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">focus</span>: {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">mounted</span>(<span style="">el</span>){</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">el</span>.<span style="">focus</span>();</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> }</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> }</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> };</span><br></br><span style="padding-right: 0.1px; box-sizing: border-box;"></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">const</span> <span style="">app</span> <span style="">=</span> <span style="">Vue</span>.<span style="">createApp</span>({</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">// 指定需要使用的局部自定义组件</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">directives</span>,</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">template</span>:<span style="">`<input type="text" v-focus >`</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> });</span><br></br><span style="padding-right: 0.1px; box-sizing: border-box;"></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="">app</span>.<span style="">mount</span>(<span style="">'#app'</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span class="cm-tag cm-bracket" style=""></</span><span style="">script</span><span class="cm-tag cm-bracket" style="">></span></span>
相关函数
除了mounted
函数外,还有一些函数:
-
created
:在绑定元素的 attribute 或事件监听器被应用之前调用。在指令需要附加须要在普通的v-on
事件监听器前调用的事件监听器时,这很有用。 -
beforeMount
:当指令第一次绑定到元素并且在挂载父组件之前调用。 -
mounted
:在绑定元素的父组件被挂载后调用。 -
beforeUpdate
:在更新包含组件的 VNode 之前调用。 -
updated
:在包含组件的 VNode 及其子组件的 VNode 更新后调用。 -
beforeUnmount
:在卸载绑定元素的父组件之前调用 -
unmounted
:当指令与元素解除绑定且父组件已卸载时,只调用一次。
hi,我是温新,一名PHPer
请登录后再评论