Vue
by WILLIAM CORREA
HTML
<div id="app">
<component :is="component"></component>
</div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
del {
color: rgba(0, 0, 0, 0.3);
}
Vue
const component = (person) => {
return {
template: `<input value="${person.name}">`
}
}
new Vue({
el: "#app",
data: () => ({
component: undefined
}),
methods: {
fetchPerson(id) {
return fetch(`https://swapi.co/api/people/${id}`)
.then((response) => response.json())
}
},
mounted () {
this.fetchPerson(1)
.then(person => { this.component = component(person) })
}
})