vuex中取状态时如果是需要双向绑定的状态该如何处理?

var store = new Vuex.Store({

state:{
    entities:[entity1,entity2]
    entity:{
        conetnt:'',
        id:'',
        title:''
    }
},
actions:{
    getEntity({commit},payload){
        commit('getEntity',payload)
    }
},
mutations:{
    getEntity(state,payload){
       let entity = state.entities.find(m=>m.id==payload.id})
       state.entity =entity 
    }
}

})

Views:

表单:
<x-textarea title="跟进内容" v-model="entity.content"></x-textarea>
<x-input="跟进内容" v-model="entity.title"></x-input>

export default({

data:{
    return {
        entity:''
    }
},
computed:{}

})

描述:
1.用户进入一个页面 触发action 获取entities数据列表。
2.用户点击列表中的某一项 进入 详情页面。详情页面是一个表单功能时修改entity 所以entity都是双向绑定的 此时 详情页面的数据

疑问:这里的entity数据时放到vuex中还是单独通过ajax去获取 组件单独保存一个局部状态,放到组件的data属性里面还是从state中取也就是通过action 触发 mutation

阅读 5k
3 个回答

你的描述略有点不清晰。如果我没理解错,你可以试试这样:如果entity.content是放在state中的,那么你在组件内computed一下,这个vuex文档中应该写的比较清楚了。然后在某一个时间(比如页面加载等vue的生命周期钩子函数内,或者是自定义的事件内),触发一个action去获取(修改)数据,此时,页面会跟着变。如果我理解错了,请私信我删除此评论。

谢邀。

Vuex 一般用于需要实时监控状态变更的情况,如果单纯的表单提交,是不需要使用 Vuex 的。

比如你有两个组件,这两个组件都需要一个值(仅仅存在某一个组件内的话,另一个组件就得不到实时的响应),这时候就需要一个 Event Bus(状态集中管理,而 Vuex 则是 Event Bus 的强大版本),监控这个值的变化。

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题