Sign In Start Free Trial
Account

Add to playlist

Create a Playlist

Modal Close icon
You need to login to use this feature.
  • Book Overview & Buying Front-End Development Projects with Vue.js
  • Table Of Contents Toc
Front-End Development Projects with Vue.js

Front-End Development Projects with Vue.js

By : Raymond Camden, Hugo Di Francesco, Clifford Gurney , Philip Kirkbride , Maya Shavin , Dániel Szabó
4.8 (10)
close
close
Front-End Development Projects with Vue.js

Front-End Development Projects with Vue.js

4.8 (10)
By: Raymond Camden, Hugo Di Francesco, Clifford Gurney , Philip Kirkbride , Maya Shavin , Dániel Szabó

Overview of this book

Are you looking to use Vue 2 for web applications, but don't know where to begin? Front-End Development Projects with Vue.js will help build your development toolkit and get ready to tackle real-world web projects. You'll get to grips with the core concepts of this JavaScript framework with practical examples and activities. Through the use-cases in this book, you'll discover how to handle data in Vue components, define communication interfaces between components, and handle static and dynamic routing to control application flow. You'll get to grips with Vue CLI and Vue DevTools, and learn how to handle transition and animation effects to create an engaging user experience. In chapters on testing and deploying to the web, you'll gain the skills to start working like an experienced Vue developer and build professional apps that can be used by other people. You'll work on realistic projects that are presented as bitesize exercises and activities, allowing you to challenge yourself in an enjoyable and attainable way. These mini projects include a chat interface, a shopping cart and price calculator, a to-do app, and a profile card generator for storing contact details. By the end of this book, you'll have the confidence to handle any web development project and tackle real-world front-end development problems.
Table of Contents (16 chapters)
close
close
Preface

Computed Setters

In the last exercise, you saw how to write maintainable and declarative computed properties that are reusable and reactive and can be called anywhere within your component. In some real-world cases when a computed property is called, you may need to call an external API to correspond with that UI interaction or mutate data elsewhere in the project. The thing that performs this function is called a setter.

Computed setters are demonstrated in the following example:

data() {
  return {
    count: 0
  }
},
computed: {
    myComputedDataProp: {
      // getter
      get() {
        return this.count + 1
      },
      // setter
      set(val) {
        this.count = val - 1
        this.callAnotherApi(this.count)
      },
    },
  },
}

By default, computed data is a getter only, which means it will only output the outcome of your expression. In this example, the computed myComputedDataProp data prop will output 1 in your Vue component:

  get() {
    return this.count + 1
  },

Then, using a setter in a computed property allows you to reactively listen to data and run a callback (setter) that contains the returned value from the getter, which can optionally be used in the setter.

In this example, the setter will update the data prop count to its new value (reflected in the getter) and then call a method within the component called callAnotherApi. Here, we pass in the count data prop to mimic sending this information somewhere useful:

  set(val) {
    this.count = val - 1
    this.callAnotherApi(this.count)
  },

You will find out exactly how to use computed data as both getters and setters in the following exercise.

Exercise 2.02: Using Computed Setters

In this exercise, you will use a computed prop as a setter and a getter, which will both output expressions and set data when triggered by a user's input.

To access the code files for this exercise, refer to https://packt.live/2GwYapA.

  1. Open a command-line terminal, navigate into the Exercise 2.02 folder, and run the following commands in order:
    > cd Exercise2.02/
    > code .
    > yarn
    > yarn serve

    Go to https://localhost:8080.

  2. Create an input field with a v-model value bound to a computed data value called incrementOne, return the value of a Vue data variable called count in the getter, and set the count variable in the setter:
    <template>
      <div class="container">
        <input type="number" v-model="incrementOne" />
        <h3>Get input: {{ incrementOne }}</h3>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          count: -1,
        }
      },
      computed: {
        incrementOne: {
          // getter
          get() {
            return this.count + 1
          },
          // setter
          set(val) {
            this.count = val - 1
          },
        },
      },
    }
    </script>

    The output of the preceding code will be as follows:

    Figure 2.3: First steps of a computed setter and getter

    Figure 2.3: First steps of a computed setter and getter

  3. Next, let's utilize the setter again. We will divide whatever the new val argument is by 2, and save that to a new data variable called divideByTwo:
    <template>
      <div class="container">
        <input type="number" v-model="incrementOne" />
        <h3>Get input: {{ incrementOne }}</h3>
        <h5>Set division: {{ divideByTwo }}</h5>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          count: -1,
          divideByTwo: 0,
        }
      },
    ...
    </script>
    ...
  4. Update the setter to divide val by 2, and bind this new value to the divideByTwo variable:
          set(val) {
            this.count = val - 1
            this.divideByTwo = val / 2
          },

    The output of the divideByTwo value should generate an outcome from the value entered in the input field, as follows:

    Figure 2.4: The outcome of the divideByTwo value

Figure 2.4: The outcome of the divideByTwo value

In this exercise, we saw how we can use computed data to both get and set data reactively in our template by binding computed variables to the v-model.

CONTINUE READING
83
Tech Concepts
36
Programming languages
73
Tech Tools
Icon Unlimited access to the largest independent learning library in tech of over 8,000 expert-authored tech books and videos.
Icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Icon 50+ new titles added per month and exclusive early access to books as they are being written.
Front-End Development Projects with Vue.js
notes
bookmark Notes and Bookmarks search Search in title playlist Add to playlist font-size Font size

Change the font size

margin-width Margin width

Change margin width

day-mode Day/Sepia/Night Modes

Change background colour

Close icon Search
Country selected

Close icon Your notes and bookmarks

Confirmation

Modal Close icon
claim successful

Buy this book with your credits?

Modal Close icon
Are you sure you want to buy this book with one of your credits?
Close
YES, BUY

Submit Your Feedback

Modal Close icon
Modal Close icon
Modal Close icon