- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我对在哪里放置我的全局函数有点困惑。在很多例子中,一个 main.js 文件指向一个应用程序组件,它被放置在 html 中的某个地方。如果我只是将我的所有逻辑包含在这个应用程序组件中,这个工作流程对我来说就很好了。但是我将组件与 Laravel 功能结合在一起,所以这对我不起作用。
目前我的 main.js 文件包含一堆我需要从我的应用程序中的任何地方访问的方法。这些方法不包含任何广播事件,因此只要它们获得 vue-resource 实例,它们就可以有效地放置在任何地方。
我的 main.js 文件:
https://github.com/stephan-v/BeerQuest/blob/develop/resources/assets/js/main.js
希望有人能告诉我如果我要使用 vuex 或一般情况下我可以在哪里放置我的友谊方法,因为这看起来根本不是最佳实践。
谢谢。
最佳答案
Vuex 管理应用程序中的所有数据。它是前端数据的“单一真实来源”。因此,任何更改应用程序状态的操作(例如添加好友或拒绝好友)都需要通过 Vuex。这通过三种主要函数类型、 setter/getter 、 Action 和突变发生。
checkout :https://github.com/vuejs/vuex/tree/master/examples/shopping-cart/vuex
Getter 用于从 Vuex 的存储中获取数据。它们对变化有反应,这意味着如果 Vuex 数据发生变化,组件中的信息也会更新。您可以将它们放在 getters.js
之类的文件中,这样您就可以将它们导入到您需要它们的任何模块中。
Action 是您直接调用的函数,即。 acceptFriendRequest
当用户点击按钮时。它们与您的数据库交互,然后发送突变。在此应用中,所有操作都在 actions.js
中。
所以你会在你的组件中调用 this.acceptFriendRequest(recipient)
。这会告诉您的数据库更新 friend 状态,然后您会收到确认信息。那就是当你发送一个突变来更新 Vuex 中当前用户的好友列表时。
突变会更新 Vuex 中的数据以反射(reflect)新状态。发生这种情况时,您在 getter 中检索的任何数据也会更新。这是整个流程的示例:
import {addFriend} from './actions.js';
import {friends} from './getters.js';
new Vue({
vuex:{
getters:{
friends
}
},
methods:{
addFriend
}
}
store.js:
export default {
state:{
friends: []
},
mutations:{
ADD_FRIEND(state, friend) {
state.friends.push(friend);
}
}
}
Action .js:
export default {
addFriend(friend){
Vue.http.post('/users/1/friends',friend)
.then((response)=>{
dispatch("ADD_FRIEND", response) //response is the new friend
})
}
}
getter.js
export default {
friends(state) {
return state.friends;
}
}
因此所有这些都被组织到它们自己的文件中,您可以将它们导入到您需要的任何组件中。您可以从任何组件调用 this.addFriend(friend)
,然后从 this.friends
访问的 getter 将在发生突变时自动更新新 friend 。您始终可以在应用的任何 View 中使用相同的数据,并且知道它与您的数据库是最新的。
一些杂项:
state
作为变量,因此您始终可以引用 Vuex 存储的状态Vue Resource
创建服务(或资源)将使获取/更新/删除资源变得更加容易。您可以将它们放在单独的文件中,然后将它们导入到您的 actions.js
中,以保持数据库检索逻辑的分离。然后你会写一些像 FriendService.get({id: 1})
而不是 Vue.http.get('/users/1')
。见https://github.com/vuejs/vue-resource/blob/master/docs/resource.md 关于javascript - 构建 Vue + Vuex 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38072302/
我刚刚开始使用 Vuex,但遇到了问题(这可能是我的一些无能为力的语法错误)。我有一个用户喜欢 like_items 并且有一个网络调用,它与一个项目不同。 mutations: { SET_TOGG
我刚开始在这里学习 Vuex。到目前为止,我一直将共享数据存储在 store.js 中。文件和导入store在每个模块中,但这越来越烦人,我担心会发生变异。 我正在努力解决的是如何使用 Vuex 从
我正在创建一个使用 Fabric.js 来管理 Canvas 的 Vue 应用程序。 我想使用 Vuex 管理 Canvas 状态。为此,我将 fabric canvas 实例设置为 vuex 状态变
我正在构建一个 Nuxt 应用程序,我正在从我在本地主机上运行的节点后端获取一些数据。 我有一个插件 getApps.js export default ({ store }) => { st
我想安装 Vuex 但出现错误。 // error npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
我使用 vuex-persistedstate 包( https://github.com/robinvdvleuten/vuex-persistedstate )在浏览器上保持数据状态。 我使用 A
假设我有一个简单的 Vuex 状态来保存食谱: const state = { recipe: { id: '', name: "", ingr
目前,我有一个具有 2 个状态属性的商店 - 版本和冠军 + 2 个发出 GET 请求然后提交到状态的操作。第二个 GET 请求 URL 需要包含我从第一个 GET 请求获取的版本,如下所示: axi
我有一个基于 Vue 和 Vuex 的小应用程序。它只是一个包含类似项目的表格 {{ item.name }} Edit Items 数组是使用 getter 从
我有一个 Vuex getter,我从应用程序中的各个组件调用它。但是,我发现在调用 getter 之前需要稍微复杂一些的逻辑,所以我使用了 Vuex Action。如何使用操作中的参数调用 gett
为什么会出现此错误: Error [vuex] Do not mutate vuex store state outside mutation handlers. 这是什么意思? 当我尝试输入编辑输入
在 Nuxt 文档(here)中,它说“您可以选择将模块文件分解为单独的文件:state.js、actions.js、mutations.js 和 getters.js。” 我似乎找不到任何示例来说明
我正在使用 TypeScript 构建一个简单的 vue 项目。我在我的 vue 项目中编写了 vuex 商店,该商店有一个名为“计算”的子模块。但是一旦创建了包含子模块的主存储,就会发生奇怪的错误(
我完全熟悉 Vuex,但我对 Vue 组合 API 一无所知。这到底是怎么回事,它和Vuex有什么区别?它涵盖了 Vuex 中的哪些差距,以及何时何地使用它们更好? 感谢您的帮助。 最佳答案 首先,
简短的问题:是否可以通过 Nuxt Auth 模块手动更新 Vuex 中的用户数据? 为什么我有这个问题:我的问题是这个。我在用户文档中的 MongoDB 中保存了一些 Likes/Follows。我
尝试将带有 vuex-module-decorators 的存储模块加载到初始化程序中时出现此错误: vuex.esm.js?2f62:261 Uncaught TypeError: Cannot r
我有一个 VueX 商店,有两个模块,user.js 和merchant.js,顶层是index.js。 user.js 中的 getter 是: 重构 const getters = { s
我在我的代码库中偶然发现了这个错误,并试图看看是否有人可以修复它。 以下是我的 listings/actions.js export const fetchFeaturedListings = ({
我正在尝试将 Vuex 与 Vue 3 一起使用。这是我在 main.js 中的代码: import { createApp } from 'vue'; import App from './App.
我在我的代码库中偶然发现了这个错误,并试图看看是否有人可以修复它。 以下是我的 listings/actions.js export const fetchFeaturedListings = ({
我是一名优秀的程序员,十分优秀!