JSFiddle - React, Tailwind, and code Playground

by ChangJoo Park

HTML

<script src="https://unpkg.com/vue/dist/vue.js"></script>

<div id="app">
  <div>
    <h1>Parent</h1>
    <pre>
      {{message}}  
    </pre>
    <pre>
      {{messageObject}}  
    </pre>
    
    <child-component 
    v-bind:message-object="messageObject"    
    v-bind:message="message"></child-component>
  </div>  
</div>

<template id="child-component">
  <div>
    <h1>Child</h1>
    {{message}}
    {{messageObject}}
    <div>
      <button v-on:click="changeParentMessage">Change Message</button>
      <button v-on:click="changeParentMessageObject">Change Message inside MessageObject</button>      
    </div>
  </div>
</template>

JavaScript

Vue.component('child-component', {
	template: '#child-component',
  props: ['message', 'message-object'],
	methods: {
    changeParentMessage: function () {
			this.message = 'Hi'
    },
    changeParentMessageObject: function () {
    	this.messageObject.message = 'Change Props!!'
		}
  }
});
new Vue({
	el: '#app',
  data: function () {
  	return {
     message: 'hello',
     messageObject: {
     		message: 'hello from object'
     }
		}
	}
})