JS-201-ReactFundamentals
  • Part 0: App Overview
  • Part 1: Intro to React
    • 1.0: Packages Setup
    • 1.1: Project Setup
    • 1.2: React Router Dom
  • Part 2: JavaScript Concepts
    • 2.0: ES6 Overview
    • 2.1: classes
    • 2.2: constructors
    • 2.3: extends
    • 2.4: super
    • 2.5: interpolation
    • 2.6: map
    • 2.7: filter
  • Part 3: Functional Components
    • 3.0: Functional Components Overview
    • 3.1: Calling Functional Components
    • 3.2: Single Element Rule
    • 3.3: Arrow Functions
    • 3.4: Challenge
    • 3.4: Solution
    • 3.5: Challenge 2
    • 3.5: Solution 2
  • Part 4: JSX Challenge
    • 4.1: JSX Overview
    • 4.1: Challenge Answer
    • 4.2: className
  • Part 5: Class Concepts
    • 5.1: State
    • 5.2: setState
    • 5.3: Class Components Challenge
    • 5.4: Class Components Challenge Answer
  • Part 6: Props Starter
    • 6.0: Props Overview
    • 6.1: Props Demo and Challenge 1
    • 6.2: Props Answer 2
    • 6.3: Props Passing Functions and Challenge 2
    • 6.4: Props Answer 2
    • 6.5: External Props and Mapping Components
    • 6.6: PropTypes
  • Part 7: Lifecycle Methods
    • 7.0: Lifecycle Overview
    • 7.1: Lifecycle Methods
    • 7.2: Mounting Methods
    • 7.3: Update Methods
    • 7.4: Unmount Methods
  • Part 8: Apps
    • 1.0 - Small Timer Apps
      • 1.1 - Simple Timer
      • 1.2 - Clock App
      • 1.3 - Stop Watch App
      • 1.4 - Challenge
    • 2.0 - Concept List
      • 2.1 - Concept Data
      • 2.2 - Concept App Component
      • 2.3 - Concept Component
      • 2.4 - Concept List Component
    • 3.0 - NYT
      • 3.1 - NytApp Component
      • 3.2 - Nyt Results
    • 4.0 - The Friend List App
      • 4.1 - Friend List App Component
      • 4.2 - Friend Component
    • 5.0 - Movie Search Application
      • 5.1 - Form Component
      • 5.2 - Form Results Component
      • 5.3 - Styled Components
    • 6.0 - YouTube Api
      • 6.1 - Video Component
      • 6.2 - Video Component
      • 6.3 - Video Component
    • 7.0 - Github Api Application
      • 7.1 - The Users
      • 7.2 - Github API Component
      • 7.3 - Github API Card
      • 7.4 - Github API Card Form
      • 7.5 - Github API Card List
      • 7.6 - Github API Search
      • 7.7 - Github API Challenge
    • 8.0 - Bitcoin Api Application
      • 8.1 - Bitcoin API Setup
      • 8.2 - Bitcoin API Fetch
      • 8.3 - Bitcoin API Line Chart
      • 8.4 - Bitcoin API Fetching Data
      • 8.5 - Bitcoin API Info Box
      • 8.6 - Bitcoin API Completed Code
    • 9.0 - Google Maps Api Challenge
    • 10.0 - Sound Cloud App Challenge
    • 11.0 - VR App Challenge
    • 12.0 - React Native Intro
  • Part 9: Project
  • Part 10: Notes
    • 10.1 - Resources
    • 10.2 - Troubleshooting
Powered by GitBook
On this page
  • Chart.js
  • Quick Aside
  • Building the Chart
  1. Part 8: Apps
  2. 8.0 - Bitcoin Api Application

8.3 - Bitcoin API Line Chart

Previous8.2 - Bitcoin API FetchNext8.4 - Bitcoin API Fetching Data

Last updated 6 years ago

It is now time to move on to another file, LineChart.js. In it, we are going to import React and Component from react and setup our LineChart component. Let's also add our render() and throw an h3 tag in our JSX to see that it's working.

import React, { Component } from 'react';

export default class LineChart extends Component {

  render() {
    return (
      <h3>Yay! Line Chart!</h3>
    );
  }
};

Now, it's time to link it with Bitcoin.js. Import LineChart.js and replace <h3>Line Chart</h3> with <LineChart/>. You should now see this:

Great! Now we are linking LineChart.js with Bitcoin.js!

Chart.js

So, in your terminal, where you would normally run npm start, type in the following: npm install chart.js --save. Now we have to import it into LineChart.js. Add this to the top under your import of React: import Chart from 'chart.js';.

Quick Aside

In the past, when we have imported something from our package.json (like React), we have only needed to allude to that specific file like this: 'react'. Why do we need to called Chart.js' file by 'chart.js' instead of just 'chart'? If we only type in 'chart', we get this:

For this particular instance, Chart.js requires us to import explicitly from 'chart.js', rather than assume the .js part, like we in other instances.

Building the Chart

We are now ready to include a chart from Chart.js. Again, if you look at the docs, they give an example of code to build out a bar graph. We, however, want a line graph. The code below is taking the example code directly from the Chart.js docs and changing bar to line, as well as adding some basic values to show the graph with data. That is all. Everything else is going to come out of the box from Chart.js--easy!

Put in the following code in your component, above render():

componentDidMount() {
  var chartContext = document.getElementById('myChart').getContext('2d');
  var myChart = new Chart(chartContext, {
    type: 'line',
    data: {
      labels: ['first','second','third','fourth'],
      datasets: [{
        data: [1,1,5,0],
        backgroundColor: 'rgba(54, 162, 235, 0.2)', 
        borderColor: 'rgba(54, 162, 235, 1)',
        borderWidth: 1
      }]
    },
    options: {
      scales: {
        yAxis: [{
          ticks: {
            beginAtZero: true
          }
        }]
      }
    }
  });
}

We now need to change our JSX to be able to see it. Replace <h3>Yay! Line Chart!</h3> with <canvas id='myChart'></canvas>. When you run it, you should see this:

There are many ways to display the data; we are going to show it in a graph, using . In the , we see that we need to install Chart.js.

Chart.js
docs
picture
picture
picture