antv2.0 通过vue2创建的自定义节点如何通过vuex实现数据共享

问题:antv 2.0 用vue2创建的自定义节点无法获取全局store
代码片段:

img

img

img

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:vue开发移动端Antv-f2的使用 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: vue + Antv F2中的 如何更新数据: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    this.initChartObj.changeData(data);

    this.initChartObj.source(newData); // 更新数据源
    this.initChartObj.repaint(); // 更新图表

    this.initChartObj.line().position('x*y');
    
    this.initChartObj.render();
    
    this.initChartObj.clear(); 			// 清理所有图表内容
    this.initChartObj.source(newData); 	// 加载新数据
    this.initChartObj
      .interval()
      .position('x*y')
      .color('z'); 			// 重新定义图形语法
      
    this.initChartObj.render();			// 图表渲染
    
  • 以下回答来自chatgpt:

    为了解决自定义节点无法获取全局store的问题,你可以将store注入到自定义节点组件中。下面是解决该问题的步骤:

    1. 首先,在自定义节点组件的CustomNode.vue文件中,引入vuevuex库,并使用Vue.use(Vuex)来安装并启用Vuex插件。
    <script>
       import Vue from 'vue';
       import Vuex from 'vuex';
    
       Vue.use(Vuex);
    
       // 组件的其他代码...
    </script>
    
    1. 然后,在自定义节点组件的CustomNode.vue文件中,创建一个store实例,并将其挂载到Vue实例上。
    <script>
       import Vue from 'vue';
       import Vuex from 'vuex';
    
       Vue.use(Vuex);
    
       const store = new Vuex.Store({
          // 在这里定义全局的statemutationsgetters等
       });
    
       new Vue({
          store, // 将store实例挂载到Vue实例上
          // 组件的其他代码...
       });
    
       // 组件的其他代码...
    </script>
    
    1. 接下来,在父组件中的App.vue文件中,将全局的store传递给custom-node组件。
    <template>
       <div>
          <custom-node :data="nodeData" :nodeStore="store"></custom-node>
          <button @click="updateNodeData">更新节点数据</button>
       </div>
    </template>
    
    <script>
       import { mapState, mapMutations } from 'vuex';
       import customNode from './CustomNode.vue';
    
       export default {
          components: {
             'custom-node': customNode,
          },
          data() {
             return {
                nodeData: {},
             };
          },
          computed: {
             ...mapState(['nodeData']),
          },
          methods: {
             ...mapMutations(['updateNodeData']),
          },
       };
    </script>
    
    1. 最后,在自定义节点组件的CustomNode.vue文件中,通过props接收传递过来的store,并将其设置为组件的store
    <script>
       import Vue from 'vue';
       import Vuex from 'vuex';
    
       Vue.use(Vuex);
    
       export default {
          props: ['nodeStore'],
    
          created() {
             // 将传递过来的store赋值给组件的store
             this.store = this.nodeStore;
          },
    
          // 组件的其他代码...
       };
    </script>
    

    完成以上步骤后,自定义节点组件就能够获取全局的store,并且能够共享数据了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^