gpt4 book ai didi

vue.js - Vuex - 何时从 http 服务器加载/初始化存储数据

转载 作者:搜寻专家 更新时间:2023-10-30 22:21:33 25 4
gpt4 key购买 nike

我想在菜单栏中显示一些数据,需要远程获取(http get 调用)才能正确显示。当我的应用程序加载时,商店尚未初始化。我应该在哪里做?

这就是我现在所拥有的。 nodeInfo 是一个空对象,只要没有获取数据即可。

导航组件

<template>
<nav class="navbar" role="navigation" aria-label="main navigation">
...
<div class="navbar-end">
<span class="navbar-item">
<div v-if="nodeInfo.latestSolidSubtangleMilestoneIndex">
{{nodeInfo.latestSolidSubtangleMilestoneIndex}} / {{nodeInfo.latestMilestoneIndex}}
</div>
<div v-else>
Node seems offline!
</div>
</span>
</div>
</div>
</nav>
</template>

<script>
import {mapGetters} from 'vuex';

export default {
name: 'Menu',
computed: {
...mapGetters(['nodeInfo']) // Only the getters, no actions called to initialize them.
}
};
</script>

<style scoped>

</style>

商店:

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

import axios from 'axios';

const iri_ip = '192.168.1.199';
const iri_port = '14265';

const state = {
token: null,
loading: false,
nodeInfo: {}
};

const mutations = {
SET_NODE_INFO(state, info) {
state.nodeInfo = info;
}
};

const actions = {
fetchNodeInfo({commit}) {
axios(createIriRequest('getNodeInfo')).then(response => {
console.log(response.data);
commit('SET_NODE_INFO', response.data);
});
}
};

const getters = {
token: state => state.token,
loading: state => state.loading,
nodeInfo: state => state.nodeInfo
};

const loginModule = {
state,
mutations,
actions,
getters
};

function createIriRequest(command) {
return {
url: `http://${iri_ip}:${iri_port}`,
data: {'command': command},
method: 'post',
headers: {
'Content-Type': 'application/json',
'X-IOTA-API-Version': '1'
}
};
}

export default new Vuex.Store({
modules: {
loginModule
}
});

目前命名没有多大意义。但是我需要从菜单组件的 create() 方法中调用“ Action ”吗?这在某种程度上会很奇怪。如果我的商店能够以某种方式自行进行初始 http 调用而不需要被触发,那就太好了。我什至不知道如何从 create() 部分调用一个 Action 。

最佳答案

在这里查看 vue.js 生命周期图:https://v2.vuejs.org/v2/guide/instance.html#Lifecycle-Diagram并在此处阅读生命周期 Hook :https://v2.vuejs.org/v2/guide/instance.html#Instance-Lifecycle-Hooks .它将大大帮助您了解何时何地添加商店调度方法。 this.$store.dispatch('fetchNodeInfo')

简而言之:

  • 创建的钩子(Hook):实例已创建,所有数据观察、计算属性、方法、监视/事件回调均已设置,但 $el 属性尚不可用。

  • Hook :Vue实例已经挂载,其中el替换为新创建的vm.$el。 el 是通过 new Vue({...}) 创建的实例。

为了您的阅读乐趣:

关于vue.js - Vuex - 何时从 http 服务器加载/初始化存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50785748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com