Ele*_*ova 11 javascript vue.js vuex
就像在main.js中一样,我正在尝试从帮助函数文件访问我的商店:
import store from '../store'
let auth = store.getters.config.urls.auth
Run Code Online (Sandbox Code Playgroud)
但是它记录了一个错误:
未捕获的TypeError:无法读取未定义的属性"getters".
我试过了
this.$store.getters.config.urls.auth
Run Code Online (Sandbox Code Playgroud)
结果相同.
商店:
//Vuex
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
config: 'config',
},
getters: {
config: state => state.config
},
});
export default store
Run Code Online (Sandbox Code Playgroud)
如何在组件外部使用我的商店?
Paw*_*cki 15
以下对我有用:
import store from '../store'
store.getters.config
// => 'config'
Run Code Online (Sandbox Code Playgroud)
小智 10
如果您使用命名空间模块,您可能会遇到与我在尝试从商店检索项目时遇到的相同困难;
可能对您有用的是在调用 getter 时指定名称空间(示例如下)
import store from '../your-path-to-your-store-file/store.js'
console.log(store.getters.['module/module_getter']);
// for instance
console.log(store.getters.['auth/data']);
Run Code Online (Sandbox Code Playgroud)
我尝试了很多不同的东西,似乎,至少在 Vue 3 中,这是有效的。这是一个示例商店:
export default {
user: {
bearerToken: 'initial',
},
};
Run Code Online (Sandbox Code Playgroud)
这是我的Getters文件:
export default {
token: (state) => () => state.user.bearerToken,
};
Run Code Online (Sandbox Code Playgroud)
在您的.js文件中,将页面添加到您的store\index.js文件中。
import store from '../store';
Run Code Online (Sandbox Code Playgroud)
为了访问 getter 只需记住它是一个函数(当您使用mapGetters.)
console.log('Checking the getters:', store.getters.token());
Run Code Online (Sandbox Code Playgroud)
状态更直接:
console.log('Checking the state:', store.state.user.bearerToken);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10515 次 |
| 最近记录: |