vue访问子组件实例时input不能聚焦

    科技2022-07-13  142

    学习vue的ref时遇到的一个小坑

    我在学习官方文档的ref(访问跟实例)时,v访问子组件实例的input不能聚焦,我一开始是这么写的:

    <body> <div id="app"> <my-compon ref="usernameInput"></my-compon> </div> <script> Vue.component('myCompon',{ template:`<input ref='input' type='text'></input>`, methods: { focus(){ this.$refs.input.focus() } }, }) new Vue({ el:'#app', created() { this.$refs.usernameInput.focus() }, }) </script> </body>

    可是我的input却一直不能聚焦,后来发现这里只需要改一处代码就能成功运行,初学者可以思考一下。

    后来发现这里是生命周期的问题,因为在created的时候vue的template还未挂载在$el中,所以这时候并不能访问到上诉代码中ref的usernameInput,所以只需将vue实例中的created()(创建实例后)改成mounted()(挂载后)即可成功聚焦!!!

    new Vue({ el:'#app', mounted() { this.$refs.usernameInput.focus() }, })

    我也是刚学习vue,懂的大佬们别喷我(T.T)…

    Processed: 0.009, SQL: 8