首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vuejs组件间的分离和通信

Vuejs组件间的分离和通信
EN

Stack Overflow用户
提问于 2018-10-08 02:44:05
回答 2查看 68关注 0票数 0

我做了一个小的vuejs应用程序,我对组件的工作原理有点困惑。

这是我到目前为止的代码:

代码语言:javascript
复制
<div id="app">
  <div v-if="loggedIn">
      <nav>
        <router-link to="/a">go to a</router-link>
        <router-link to="/b">go to b</router-link>
      </nav>

      <router-view></router-view>
  </div>

  <div v-else>
    <form v-on:submit.prevent="login" action="">
       <label>
         <input type="text" v-model="name" placeholder="Login" />
       </label>                   

       <label>        
         <input type="password" placeholder="Password" v-model="password" />                    
       </label>         

       <button type="submit">Login</button>        
    </form>
  </div>

</div>

JS:

代码语言:javascript
复制
const A = { template: '<div>A</div>' }
const B = { template: '<div>B</div>' }

const routes = [
  { path: '/a', component: A },
  { path: '/b', component: B }
]

const router = new VueRouter({
  mode: 'history',
  routes
})

const app = new Vue({
  router,
  data : { 
    loggedIn : false,
    name: '',
    password: ''
  },

  methods: {

    login: function(){
      this.loggedIn = true;
    }

  }

}).$mount('#app')

http://jsfiddle.net/cbq6tmje/

注意,登录框只是索引文件中的一些html,但常识告诉我,它应该是一个单独的组件。

问题是,如果我让它成为一个组件,我就无法从主应用程序中共享或调用函数。比如login()方法。我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2018-10-08 02:54:39

您不必使登录框成为一个组件。如果你打算在你的应用中重用一个html元素,也就是一个模式,那么我会考虑把它变成一个组件。如果您计划重用方法,则必须将它们转换为mixin - https://vuejs.org/v2/guide/mixins.html。然后,您可以扩展mixin以在您需要它的任何组件中使用。

票数 0
EN

Stack Overflow用户

发布于 2018-10-08 07:02:41

实现这一点的最简单方法是使用localStorage。然而,最好的方法是使用vuex (https://vuex.vuejs.org/),这是一种状态管理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52691714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档