这可能是一个非常新手的问题,但我找不到答案.我需要存储,例如一个列表,然后在同一个指针下用另一个替换它.
我需要一种方法来检测是否有任何 DOM 节点/元素已被删除或修改,并立即将该元素恢复到之前的状态。
我尝试“备份” body 节点,并在第一次运行后每次 MutationObserver 被触发时将 body.innerHTML 设置为其原始状态,但这会导致浏览器崩溃。
有没有快速的方法来恢复已修改或删除的元素?
我有一个非常简单的模型post,嵌入了几个comments
我想知道我应该怎么做一个突变来添加一个新comment的post
由于我已经定义了一个查询以获取post给定的查询id,我想尝试使用以下变异语法
mutation {
post(id: "57334cdcb6d7fb172d4680bb") {
addComment(data: {
text: "test comment"
})
}
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到一种方法让它发挥作用.即使我处于变异状态,输出类型是一个postaddComment也被认为是一个字段post应该有的.
你们有什么想法吗?
谢谢
我是GraphQL的新手.如何在GraphQL中编写删除突变以删除多个项目(多个ID)?我用scaphold.io.
我想使用 Vuex 来存储有关我的客户端 - 服务器通信的状态,例如搜索逻辑:
// status is either synching|synched|error
state: { query:"", result:[], status:"synching" }
Run Code Online (Sandbox Code Playgroud)
我实现了搜索操作。动作只能通过突变修改状态:
function search(context, query) {
context.commit("query", query);
context.commit("status", "synching");
// some asynch logic here
...
context.commit("result", result);
context.commit("status", "synched");
...
}
Run Code Online (Sandbox Code Playgroud)
但是,现在这些突变也暴露给了我的组件,它们现在能够使我的状态不一致。是否可以隐藏组件的突变?
我是 GraphQL 的新手,但我真的很喜欢它。现在我在玩接口和联合,我面临着突变的问题。
假设我有这个架构:
interface FoodType {
id: String
type: String
}
type Pizza implements FoodType {
id: String
type: String
pizzaType: String
toppings: [String]
size: String
}
type Salad implements FoodType {
id: String
type: String
vegetarian: Boolean
dressing: Boolean
}
type BasicFood implements FoodType {
id: String
type: String
}
Run Code Online (Sandbox Code Playgroud)
现在,我想创造新的食物,所以我开始做这样的事情:
type Mutation {
addPizza(input:Pizza):FoodType
addSalad(input:Salad):FoodType
addBasic(input:BasicFood):FoodType
}
Run Code Online (Sandbox Code Playgroud)
这不起作用有两个原因:
所以,我的问题是:如何在接口的这种上下文中处理突变而不必过多地复制类型?我想避免使用 Pizza 类型的查询和 InputPizza 类型的突变。
感谢您的帮助。
我想我对Vue + Vuex有误解。
我有一个 Vuex 状态,其中包含一个列表过滤器。列表中的每个过滤器项目都可以标记为已选择。但是 - Vuex 状态只能在单击应用按钮时通过修改器进行修改,以便其他组件可以对更改做出反应。
例如,列表将根据所选过滤器重新加载数据。当状态更新时,组件也应该更新。
我创建了一个CodePen:
https://codepen.io/anon/pen/OzEJWP?editors=1010
https://jsfiddle.net/rxqu7ame/
Vue.component('filter-item', {
template: ` <div>
<!--{{item.color}} ({{item.selected}}) <button @click="item.selected = !item.selected">toggle</button>-->
{{item.color}} ({{isSelected}}) <button @click="isSelected = !isSelected">toggle</button>
</div>`,
data: function () {
return {
isSelected: this.item.selected
}
},
computed: {
/*isSelected : function(){
return this.item.selected;
}*/
},
props: ['item']
});
Run Code Online (Sandbox Code Playgroud)
我遇到了不同的问题:
selected当我直接在模板内切换属性时filter-item,Vuex 状态也会更新(我不想要)。
因此,我尝试使用状态初始化数据属性(组件的本地属性),这样只有数据变量isSelected会被更新。当我按下“应用”按钮时,Vuex 状态将被更新(稍后我将使用突变)。到目前为止,一切都很好。但现在,isSelected当状态发生变化时,该属性不会自动更新。
如果我使用计算属性,isSelected则无法在单击事件中更改(因为它是只读的)。
实现我想要的场景的正确方法是什么?
我想通过操作将更改应用于 vuejs 应用程序中的变量。但我收到这个错误说[vuex] unknown local mutation type: updateValue, global type: app/updateValue
这是我的商店文件夹结构:
-store
-modules
-app
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
Run Code Online (Sandbox Code Playgroud)
这是我的./store/index.js文件:
-store
-modules
-app
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
Run Code Online (Sandbox Code Playgroud)
这是我的./store/modules/index.js:
import Vue from 'vue'
import Vuex from 'vuex'
import actions from './actions'
import getters from './getters'
import modules from './modules'
import mutations from './mutations'
import state from './state'
Vue.use(Vuex)
const store = new …Run Code Online (Sandbox Code Playgroud) Vue 允许改变 props,但不推荐。在文档(https://vuejs.org/guide/components/props.html#one-way-data-flow)中我发现
作为最佳实践,您应该避免此类突变 [通过子级改变嵌套 props],除非父级和子级在设计上紧密耦合。
对我来说,这听起来不是一个好的做法,但没关系。然而,在我发现的所有论坛帖子中,他们都说“永远不要这样做!”之类的话。并且父组件的重新渲染甚至可能会损坏数据(即Vue 2 - Mutating props vue-warn)。
如果由我决定,我会坚持建议,而不是争论这一点。然而,我工作的团队广泛使用 prop 突变。
目前为止还可以,但是我担心将来可能会出现问题。在未来的版本中,Vue 是否真的会禁止这样做?或者他们应用了仅与遵循建议的代码兼容的细微更改?
我想知道的是,其他人如何处理对象深处发生变化的情况。当通过发出来完成此操作时,在其间的所有组件中也需要大量发出。
了解道具突变的做法是多么不常见也很有趣。你们中有人也这样做吗?
用户单击按钮后,我想用本地对象中的数据替换 vuex 存储中的数据。但我被突变困住了。这是一些代码以了解更多详细信息。
这是用户单击按钮后调用的方法。(this.tableview是一个本地对象,与vuex对象具有相同的值)
updateVuexTableview() {
// eslint-disable-next-line no-console
console.log("Update Vuex Table view");
this.updateTableview(this.tableview)
}
Run Code Online (Sandbox Code Playgroud)
在这个方法中我的 vuex 动作被调用。看起来像这样:(updTableview是我要插入的新数据)
async updateTableview({commit}, updTableview) {
const response = await axios.put(
`http://localhost:3000/tableview`,
updTableview
);
// eslint-disable-next-line no-console
console.log(response.data);
commit('updateTableviewMut', response.data);
},
Run Code Online (Sandbox Code Playgroud)
这就是所谓的突变。这就是我被困住的地方。我尝试弹出数据并再次推送它,但到目前为止没有任何效果。
updateTableviewMut: (state, updTableview) => {
state.tableview.push(updTableview)
},
Run Code Online (Sandbox Code Playgroud)
这就是我的状态:
const state = {
tableview: {
"thema_c": true,
"status_c": true,
"priority_c": true,
"custom1_c": true,
"custom2_c": true,
"customFieldName1": "Custom1",
"customFieldName2": "Custom2"
},
};
Run Code Online (Sandbox Code Playgroud) mutation ×10
vue.js ×5
vuex ×4
graphql ×3
javascript ×3
action ×2
apollo ×1
datatables ×1
dom ×1
graphql-js ×1
interface ×1
jquery ×1
nested ×1
object ×1
ocaml ×1
prop ×1
store ×1
visibility ×1