Technologies:
Tolerim
a day ago
How come the router push is undefined?
import { createApp } from 'vue';
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/js/bootstrap.js';
import App from './App.vue';
import router from './router';
const app = createApp(App);
app.use(router);
app.mount('#app');
Answers(1)
Tolerim
a day ago
Verified Answer
It looks like the issue might be with the way you're importing the vue-router library in your Header.vue file. Instead of importing the push method directly from vue-router, you'll want to import it from vue-router using the router instance that you created.
Here's an example of how you can do this:
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div>
<ul class="navbar-nav">
<li class="nav-item" @click="goto('/home')">
<a class="nav-link">Home</a>
</li>
<li class="nav-item" @click="goto('/about')">
<a class="nav-link">About</a>
</li>
<li class="nav-item" @click="goto('/contact')">
<a class="nav-link">Contact</a>
</li>
</ul>
</div>
</nav>
</template>
<script>
import { getCurrentInstance } from 'vue';
export default {
setup() {
const instance = getCurrentInstance();
const goto = (route) => {
instance.proxy.$router.push(route);
};
return { goto };
},
};
</script>
In this example, we're using the getCurrentInstance function from the vue package to get access to the router instance that we created in the router/index.js file. Then, we're defining a goto function that takes a route as an argument and uses the push method on the router instance to navigate to that route.
Finally, we're returning the goto function from the setup function so that we can use it in the template. We're also using the instance.proxy property to get access to the Vue instance so that we can access the $router property.