I'm currently learning Vue JS and I made a simple app that pulls information from API and displays facts about a country given a 2-letter country code. I'm looking for feedback on how to improve the code. I'd appreciate any feedback. Many thanks.
This is my app.vue
import axios from "axios"; export default { name: "App", data() { return { userinput: "", country: { name: "", capital: "", currency: "", phone: "", emoji: "", languages: [], continent: "", }, properties: { demonym: "", area: "", timezones: [], population: "" }, }; }, computed: { className: function () { if (this.country.continent) { if (this.country.continent.name == "Europe") return "europe"; else if (this.country.continent.name == "Asia") return "asia"; else if (this.country.continent.name == "Antarctica") return "antarctica"; else if (this.country.continent.name == "Oceania") return "oceania"; else if (this.country.continent.name == "Africa") return "africa"; } return ""; }, }, methods: { onEnter: function () { if (this.userinput !== "") { let body = { query: ` query($code: ID!) { country(code: $code) { name capital currency phone emoji languages {name} continent {name} }}`, variables: { code: this.userinput }, }; let options = { headers: { "Content-Type": "application/json" } }; axios .all([ axios.post( "https://countries.trevorblades.com/graphql", body, options ), axios.get("https://restcountries.com/v2/alpha/" + this.userinput), ]) .then( axios.spread((data1, data2) => { /*console.log(res.data);*/ let countryName = data1.data.data.country.name; let capital = data1.data.data.country.capital; let currency = data1.data.data.country.currency; let phone = data1.data.data.country.phone; let emoji = data1.data.data.country.emoji; let languages = data1.data.data.country.languages; let continent = data1.data.data.country.continent; this.country.name = countryName == null ? "" : countryName; this.country.capital = capital == null ? "" : capital; this.country.currency = currency == null ? "" : currency; this.country.phone = phone == null ? "" : phone; this.country.emoji = emoji == null ? "" : emoji; this.country.languages = languages.length == 0 ? "" : languages; this.country.continent = continent == null ? "" : continent; let demonym = data2.data.demonym; let area = data2.data.area; let timezones = data2.data.timezones; let population = data2.data.population; this.properties.demonym = demonym == null ? "" : demonym; this.properties.area = area == null ? "" : area; this.properties.timezones = timezones.length == 0 ? "" : timezones; this.properties.population = population == null ? "" : population; console.log(this.country.name); console.log(this.country.capital); console.log(this.country.currency); console.log(this.country.phone); console.log(this.country.emoji); console.log(this.country.languages); console.log(this.country.continent); console.log(this.properties.demonym); console.log(this.properties.area); console.log(this.properties.timezones); console.log(this.properties.population); }) ) .catch((error) => { console.log(error.response.data.error); }); } }, nameWithComma(index, name, languageslist) { if (index !== languageslist.length - 1) { return name.concat(",").trim(); } else { return name; } }, convertToLineBreak(txt) { if (!txt) { return txt.replace(txt, "<br>"); } return txt; }, }, }; </script> <template> <div id="app" :class="className"> <main> <div class="search-box"> <input type="text" class="search-bar" placeholder="Enter a two-letter country code..." v-model="userinput" @keyup.enter="onEnter" /> </div> <div v-if="country.name != ''"> <div class="countryname-box"> <div class="name">{{ country.name }}</div> <div class="continent"> {{ country.continent.name }} </div> </div> <div class="emoji-box"> <div class="emoji"> {{ country.emoji }} </div> </div> <div class="countryinfo-box"> <div class="left-container"> <div class="second-half"> <p class="bold">Currency:</p> <p class="bold">Timezone:</p> <p class="bold">Language(s):</p> <p class="bold">Capital:</p> <p class="bold">Area:</p> <p class="bold">Demonym:</p> <p class="bold">Population:</p> <p class="bold">Call Code:</p> </div> </div> <div class="right-container" style="white-space: pre"> <p>{{ convertToLineBreak(country.currency) }}</p> <div class="textinline" v-for="(item, index) in properties.timezones" :key="index" > {{ nameWithComma(index, item, properties.timezones) }} </div> <br /> <div class="textinline" v-for="(item, index) in country.languages" :key="index" > {{ nameWithComma(index, item.name, country.languages) }} </div> <p>{{ country.capital }}</p> <p>{{ properties.area }}</p> <p>{{ properties.demonym }}</p> <p>{{ properties.population }}</p> <p>{{ country.phone }}</p> </div> </div> </div> </main> </div> </template> ```