Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication vuejs传递反应式数据的最佳方式_Authentication_Vue.js_Reactive - Fatal编程技术网

Authentication vuejs传递反应式数据的最佳方式

Authentication vuejs传递反应式数据的最佳方式,authentication,vue.js,reactive,Authentication,Vue.js,Reactive,使用vue.js。我有一个身份验证文件(auth.js),当检测到身份验证状态更改时,将在其中存储用户信息。当用户信息更改时,网站的其他部分需要更改。 我该怎么做? 我可以导入auth.js,但是其他部分只能使用原始状态。如果组件依赖于全局状态,那么应该将该状态提取到存储中,您可以使用。下面是一个基本示例,它在loggedIn标志设置为true时更改导航栏: // Define our vuex store with a loggedIn state property const store =

使用vue.js。我有一个身份验证文件(auth.js),当检测到身份验证状态更改时,将在其中存储用户信息。当用户信息更改时,网站的其他部分需要更改。 我该怎么做?
我可以导入auth.js,但是其他部分只能使用原始状态。

如果组件依赖于全局状态,那么应该将该状态提取到存储中,您可以使用。下面是一个基本示例,它在
loggedIn
标志设置为true时更改导航栏:

// Define our vuex store with a loggedIn state property
const store = new Vuex.Store({
  state: {
    loggedIn: false
  },
  mutations: {
    setLoggedIn(state, value) {
      state.loggedIn = value
    }
  }
})

Vue.component('navbar', {
  template: `
   <div>
    <ul>
      <li v-if="loggedIn"><a href="#" @click="logOut">Logout</a></li>
      <li v-else>Login</li>
    </ul>
   </div>`,
  computed: {
    loggedIn() {
      return store.state.loggedIn // return loggedIn from vuex
    }
  },
  methods:{
    logOut(){
      store.commit('setLoggedIn', false); // mutate loggedIn state in vuex
    }
  }
})

new Vue({
  el: '#app',
  computed:{
    loggedIn(){
      return store.state.loggedIn // return loggedIn from vuex
    }
  },
  methods: {
    logIn() {
      store.commit('setLoggedIn', true) // mutate loggedIn state in vuex
    }
  }
})
//使用loggedIn state属性定义我们的vuex存储
const store=新的Vuex.store({
声明:{
洛格丁:错
},
突变:{
setLoggedIn(状态、值){
state.loggedIn=值
}
}
})
Vue.组件(“导航栏”{
模板:`
  • 登录
`, 计算:{ loggedIn(){ return store.state.loggedIn//从vuex返回loggedIn } }, 方法:{ 注销(){ commit('setLoggedIn',false);//在vuex中改变loggedIn状态 } } }) 新Vue({ el:“#应用程序”, 计算:{ loggedIn(){ return store.state.loggedIn//从vuex返回loggedIn } }, 方法:{ 登录(){ commit('setLoggedIn',true)//在vuex中改变loggedIn状态 } } })
请记住,这只是一个设置登录状态以更新视图的标志,在允许用户访问敏感信息之前,您应该在服务器端执行其他检查

以下是JSFIDLE: