Uncaught Typeerror: Cannot Read Property 'transition' of Null

vue-chartjs logo

npm version codecov Build Status Package Quality npm Gitter chat license CDNJS version Known Vulnerabilities Maintainability Donate ko-fi

vue-chartjs

vue-chartjs is a wrapper for Chart.js in vue. You lot tin easily create reuseable chart components.

Demo & Docs

  • 📺 Demo
  • 📖 Docs

Compatibility

  • v1 later @legacy
    • Vue.js ane.x
  • v2 later
    • Vue.js 2.10

Later on the final release of vue.js 2, you too get the v2 by default if you install vue-chartjs over npm. No need for the @side by side tag anymore. If you desire the v1 y'all need to define the version or use the legacy tag. If you're looking for v1 bank check this branch

Install

  • yarn install: yarn add vue-chartjs nautical chart.js
  • npm install: npm install vue-chartjs nautical chart.js --save

Or if yous want to utilise it directly in the browser add

              <              script              src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js">              </              script              >              <              script              src="https://unpkg.com/vue-chartjs/dist/vue-chartjs.min.js">              </              script              >            

to your scripts. Run across Codepen

Browser

You can use vue-chartjs straight in the browser without any build setup. Like in this codepen. For this case, please apply the vue-chartjs.min.js which is the minified version. You lot as well need to add together the Nautical chart.js CDN script.

You lot tin can then simply register your component:

              Vue              .              component              (              'line-chart'              ,              {              extends:              VueChartJs              .              Line              ,              mounted              (              )              {              this              .              renderChart              (              {              labels:              [              'January'              ,              'February'              ,              'March'              ,              'Apr'              ,              'May'              ,              'June'              ,              'July'              ]              ,              datasets:              [              {              label:              'Data One'              ,              backgroundColor:              '#f87979'              ,              data:              [              40              ,              39              ,              10              ,              twoscore              ,              39              ,              80              ,              xl              ]              }              ]              }              ,              {              responsive:              truthful              ,              maintainAspectRatio:              false              }              )              }              }              )            

How to apply

You need to import the component and then either utilise extends or mixins and add it.

Yous can import the whole package or each module individual.

              import              VueCharts              from              'vue-chartjs'              import              {              Bar              ,              Line              }              from              'vue-chartjs'            

Simply create your ain component.

              // CommitChart.js              import              {              Bar              }              from              'vue-chartjs'              consign              default              {              extends:              Bar              ,              mounted              (              )              {              // Overwriting base return method with actual data.              this              .              renderChart              (              {              labels:              [              'Jan'              ,              'February'              ,              'March'              ,              'April'              ,              'May'              ,              'June'              ,              'July'              ,              'August'              ,              'September'              ,              'October'              ,              'November'              ,              'Dec'              ]              ,              datasets:              [              {              label:              'GitHub Commits'              ,              backgroundColor:              '#f87979'              ,              data:              [              forty              ,              20              ,              12              ,              39              ,              10              ,              40              ,              39              ,              lxxx              ,              forty              ,              20              ,              12              ,              11              ]              }              ]              }              )              }              }            

or in TypeScript

              // CommitChart.ts              import              {              Component              ,              Mixins              }              from              'vue-property-decorator'              import              {              Bar              ,              mixins              }              from              'vue-chartjs'              ;              import              {              Component              }              from              'vue-holding-decorator'              ;              @Component              (              {              extends:              Bar              ,              // this is important to add together the functionality to your component              mixins:              [              mixins              .              reactiveProp              ]              }              )              export              default              class              CommitChart              extends              Mixins              (              mixins              .              reactiveProp              ,              Bar              )              {              mounted              (              )              {              // Overwriting base return method with actual data.              this              .              renderChart              (              {              labels:              [              'January'              ,              'February'              ,              'March'              ,              'April'              ,              'May'              ,              'June'              ,              'July'              ,              'August'              ,              'September'              ,              'October'              ,              'November'              ,              'Dec'              ]              ,              datasets:              [              {              label:              'GitHub Commits'              ,              backgroundColor:              '#f87979'              ,              information:              [              40              ,              20              ,              12              ,              39              ,              10              ,              40              ,              39              ,              fourscore              ,              40              ,              twenty              ,              12              ,              11              ]              }              ]              }              )              }              }            

And so only import and use your ain extended component and apply it similar a normal vue component

              import              CommitChart              from              'path/to/component/CommitChart'            

Another Example with options

You can overwrite the default chart options. Only laissez passer the options object as a second parameter to the return method

              // MonthlyIncome.vue              import              {              Line              }              from              'vue-chartjs'              export              default              {              extends:              Line              ,              props:              [              'data'              ,              'options'              ]              ,              mounted              (              )              {              this              .              renderChart              (              this              .              data              ,              this              .              options              )              }              }            

Use it in your vue app

              import              MonthlyIncome              from              'path/to/component/MonthlyIncome'                            <              template              >              <              monthly-income              :data              =              {....              }              />              </template              >              <              script              >              export              default              {              components:              {              MonthlyIncome              }              ,              ....              }              </script>

Reactivity

Chart.js does non update or re-return the nautical chart if new data is passed. However, you lot can but implement this on your own or use one of the two mixins which are included.

  • reactiveProp
  • reactiveData

Both are included in the mixins module.

The mixins automatically create chartData as a prop or data. And add a watcher. If information has changed, the chart will update. However, keep in mind the limitations of vue and javascript for mutations on arrays and objects. It is of import that you lot laissez passer your options in a local variable named options! The reason is that if the mixin re-renders the chart it calls this.renderChart(this.chartData, this.options) and so don't pass in the options object directly or it volition be ignored.

More info hither

              // MonthlyIncome.js              import              {              Line              ,              mixins              }              from              'vue-chartjs'              export              default              {              extends:              Line              ,              mixins:              [              mixins              .              reactiveProp              ]              ,              props:              [              'chartData'              ,              'options'              ]              ,              mounted              (              )              {              this              .              renderChart              (              this              .              chartData              ,              this              .              options              )              }              }            

Mixins module

The mixins module is included in the VueCharts module and as a separate module. Some ways to import them:

              // Load complete module with all charts              import              VueCharts              from              'vue-chartjs'              export              default              {              extends:              VueCharts              .              Line              ,              mixins:              [              VueCharts              .              mixins              .              reactiveProp              ]              ,              props:              [              'chartData'              ,              'options'              ]              ,              mounted              (              )              {              this              .              renderChart              (              this              .              chartData              ,              this              .              options              )              }              }            
              // Load separate modules              import              {              Line              ,              mixins              }              from              'vue-chartjs'              export              default              {              extends:              Line              ,              mixins:              [              mixins              .              reactiveProp              ]              ,              props:              [              'chartData'              ,              'options'              ]              ,              mounted              (              )              {              this              .              renderChart              (              this              .              chartData              ,              this              .              options              )              }              }            
              // Load divide modules with destructure assign              import              {              Line              ,              mixins              }              from              'vue-chartjs'              const              {              reactiveProp              }              =              mixins              export              default              {              extends:              Line              ,              mixins:              [              reactiveProp              ]              ,              props:              [              'chartData'              ,              'options'              ]              ,              mounted              (              )              {              this              .              renderChart              (              this              .              chartData              ,              this              .              options              )              }              }            

Single File Components

You can create your components in Vues single file components. However it is important that yous do not take the <template></template> included. Because Vue tin't merge templates. And the template is included in the mixin. If you leave the template tag in your component, information technology will overwrite the one which comes from the base of operations chart and you will have a bare screen.

Bachelor Charts

Bar Chart

Bar

Line Nautical chart

Line

Doughnut

Doughnut

Pie

Pie

Radar

Pie

Polar Area

Pie

Chimera

Bubble

Scatter

Scatter

Build Setup

                              #                install dependencies              npm install                              #                serve with hot reload at localhost:8080              npm run dev                              #                build for product with minification              npm run build                              #                run unit tests              npm run unit                              #                run e2e tests              npm run e2e                              #                run all tests              npm              test            

For a detailed explanation of how things piece of work, check out the guide and docs for vue-loader.

Contributing

  1. Fork it ( https://github.com/apertureless/vue-chartjs/fork )
  2. Create your feature co-operative (git checkout -b my-new-characteristic)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git button origin my-new-feature)
  5. Create a new Pull Request

License

This software is distributed under MIT license.

Buy Me A Coffee

GitHub

https://github.com/apertureless/vue-chartjs

wyatthowing.blogspot.com

Source: https://bestofvue.com/repo/apertureless-vue-chartjs-vuejs-charts

0 Response to "Uncaught Typeerror: Cannot Read Property 'transition' of Null"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel