【问题标题】:VueJS/Vuetify: Change colwidth with animation/transitionVueJS/Vuetify:用动画/过渡改变 colwidth
【发布时间】:2020-11-28 20:49:21
【问题描述】:

这是我的应用组件:

<template>
  <v-app id="inspire">

    <v-main>
      <v-container fluid>
        <v-row>
          <v-col :cols="dynamicCol">
            <worldmap></worldmap>
          </v-col>

        </v-row>
      </v-container>
    </v-main>

  </v-app>
</template>

<script>
import WorldMap from "./components/WorldMap";

export default {
  props: {
    source: String
  },
  components: {
    worldmap: WorldMap
  },
  computed: {
    changeDynamicCol() {
      return this.$store.state.lineData.data.length;
    }
  },
  watch: {
    changeDynamicCol(value) {
      if (value > 0) {
        this.dynamicCol = 9;
      }
    }
  },
  data: () => ({
    dynamicCol: 12,
    drawer: null
  }),
  created() {
    this.$vuetify.theme.dark = true;
  }
};
</script>

<style scoped></style>

我的应用程序从一个空数组开始,当我收到数据时,第一个容器的宽度从 12 缩小到 9。代码本身工作正常,但是里面的图表会对视口中的变化做出反应,所以 get´s目前刚刚切断。一般来说,当它被动画化时,它看起来要好得多。

有谁知道我是否可以以及如何通过过渡或其他动画更改v-col 的宽度?

【问题讨论】:

    标签: vue.js vuetify.js transition


    【解决方案1】:

    我认为你以错误的方式使用观察者。 在这里,我展示了我如何看待您的案例,但我不确定它是否工作正常。 如果你有更多问题,我可以在 cmets 中回答

    <template>
      <v-app id="inspire">
    
        <v-main>
          <v-container fluid>
            <v-row>
              <v-col :cols="columnCount">
                <worldmap></worldmap>
              </v-col>
    
            </v-row>
          </v-container>
        </v-main>
    
      </v-app>
    </template>
    
    <script>
    import WorldMap from "./components/WorldMap";
    import { mapState } from 'vuex'
    export default {
      props: {
        source: String
      },
      components: {
        worldmap: WorldMap
      },
      computed: {
        ...mapState({
          lineData: state => state.lineData.data.length
        }),
        columnCount() {
          if (this.lineData > 0) {
          return 9
          }
          return 12
        }
      },
      data: () => ({
        drawer: null
      }),
    };
    </script>

    【讨论】:

    • 是的,你是对的。你的解决方案是要走的路。但不幸的是它并没有解决我原来的问题;-)
    • 你试过内置 vue 吗?