Javascript 当vuex中的另一个getter发生更改时,我可以重新计算一个getter吗?

Javascript 当vuex中的另一个getter发生更改时,我可以重新计算一个getter吗?,javascript,vue.js,vuejs2,vuex,getter,Javascript,Vue.js,Vuejs2,Vuex,Getter,我正在vuex中使用此getter: authority\u计数(状态、获取者){ 返回getters.dataView?.getUint16(4,true)| | state.pack.authority_count; } 当dataView为空时,我希望authority_count为state.pack.authority_count,在我在页面中加载文件后,我希望在加载完成后,在dataView中加载的数据填充完数据后,重新计算authority_count。我怎样才能做到这一点 问题

我正在vuex中使用此getter:

authority\u计数(状态、获取者){
返回getters.dataView?.getUint16(4,true)| | state.pack.authority_count;
}
当dataView为空时,我希望authority_count为state.pack.authority_count,在我在页面中加载文件后,我希望在加载完成后,在dataView中加载的数据填充完数据后,重新计算authority_count。我怎样才能做到这一点

问题是当我让getters.dataView返回一个dataView时,authority\u count仍然返回state.pack.authority\u count


使用文件输入从文件中获取二进制数据,并填写到arrayBuffer,后者由dataView getter访问

登录权限\u计数

[HMR]正在等待来自WDS的更新信号。。。
getters.dataView:null
州包装局数量:5

链接项目中存在两个问题:

  • 必须仅在Vuex突变中更改Vuex状态(例如,
    arrayBuffer
    ):
  • 突变:{
    setArrayBuffer(状态、有效负载){
    state.arrayBuffer=有效载荷;
    }
    },
    
    这样称呼它:

    reader.onload=(事件)=>{
    此.store.commit('setArrayBuffer',event.target.result');
    }
    
  • 组件的
    arrayBuffer
    必须计算为与Vuex保持同步:
  • 数据(){
    返回{
    包装:这个。$store.state.pack
    }
    },
    计算:{
    arrayBuffer(){//您可以使用'mapState',同样的方法
    返回此。$store.state.arrayBuffer
    },
    缓冲区(){
    return[…新的Uint8Array(this.arrayBuffer)]
    .map(b=>b.toString(16.toUpperCase().padStart(2,'0'));
    }
    },
    

    如果希望将包与Vuex同步,则需要对包执行相同的操作。

    链接的项目中存在两个问题:

  • 必须仅在Vuex突变中更改Vuex状态(例如,
    arrayBuffer
    ):
  • 突变:{
    setArrayBuffer(状态、有效负载){
    state.arrayBuffer=有效载荷;
    }
    },
    
    这样称呼它:

    reader.onload=(事件)=>{
    此.store.commit('setArrayBuffer',event.target.result');
    }
    
  • 组件的
    arrayBuffer
    必须计算为与Vuex保持同步:
  • 数据(){
    返回{
    包装:这个。$store.state.pack
    }
    },
    计算:{
    arrayBuffer(){//您可以使用'mapState',同样的方法
    返回此。$store.state.arrayBuffer
    },
    缓冲区(){
    return[…新的Uint8Array(this.arrayBuffer)]
    .map(b=>b.toString(16.toUpperCase().padStart(2,'0'));
    }
    },
    


    如果希望将
    pack
    与Vuex同步,则需要对其执行相同的操作。

    您的代码遇到了什么问题?问题是在dataView不为null之后,getter authority\u count仍然是state.pack.authority\u count。设置
    dataView
    之后,getter似乎没有再次运行。您能显示设置数据视图的代码吗?通过将
    getters.dataView
    state.pack.authority\u count
    记录在此getterI中,我从二进制文件加载,然后传递到arrayBuffer,然后再传递到dataView,我已经提供了详细信息。您的代码遇到了什么问题?问题是在dataView不为null之后,getter authority\u count仍然是state.pack.authority\u count。设置
    dataView
    后,getter似乎没有再次运行。您能显示设置数据视图的代码吗?通过将
    getters.dataView
    state.pack.authority\u count
    记录在此getterI中,我从二进制文件加载,然后传递到arrayBuffer,然后再传递到dataView,我已经提供了详细信息。我已经按照您的建议进行了更改,但console.log是一样的。使用控制台测试:
    onload
    回调中是否有数据?它是否传递给
    setArrayBuffer
    DNSBuffer
    正在工作,因此我认为
    onload
    有数据并传递给
    setArrayBuffer
    ,我可以使用单独的getter来提供一小段数据,另一个getter将所有数据收集到一个对象中,并将其传递到DNSPacket组件中,这是另一种逐渐改变数据源的方式,我没有意识到。很好。一旦确认
    state.arrayBuffer
    在突变中发生了更改,那么
    getter.dataView
    也必须更改。继续使用console测试所有连接。我找到了一种避免在dataView上测试的方法,只是将显示逻辑放入
    中。但我不能决定是继续学习有助于未来发展的东西,还是仅仅解决可行的解决方案,也不关心正在发生的事情以及为什么会这样。如果你是我,你会怎么做?我已经像你建议的那样改变了,但是console.log是一样的。使用控制台测试:
    onload
    回调中是否有数据?它是否传递给
    setArrayBuffer
    DNSBuffer
    正在工作,因此我认为
    onload
    有数据并传递给
    setArrayBuffer
    ,我可以使用单独的getter来提供一小段数据,另一个getter将所有数据收集到一个对象中,并将其传递到DNSPacket组件中,这是另一种逐渐改变数据源的方式,我没有意识到。很好。一旦确认
    state.arrayBuffer
    在突变中发生了更改,那么
    getter.dataView
    也必须更改。继续使用console测试所有连接。我找到了一种避免在dataView上测试的方法,只是将显示逻辑放入
    中。但我不能决定是继续学习有助于未来发展的东西,还是仅仅解决可行的解决方案,而且我也不关心正在发生的事情