Skip to content

Instantly share code, notes, and snippets.

@williamoliveira
Last active November 24, 2017 02:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save williamoliveira/ac655f47245621e323718866739d6a1a to your computer and use it in GitHub Desktop.
Save williamoliveira/ac655f47245621e323718866739d6a1a to your computer and use it in GitHub Desktop.

Vue

// ./Greeter.vue
<template>
    <div>
        <span>{{greet}}, {{who}}</span>
        <button @click="$emit('click')">Click me</button>
    </div>
</template>
<script>
    exports default {
        name: 'Greeter',
        props: ['greet', 'who'],
    }
</script>

// ./Hello.vue
<template>
    <greeter greet="Hello" :who="who" @click="$emit('click')" />
</template>
<script>
    import Greeter from './Greeter.vue'

    exports default {
        name: 'Hello',
        props: ['who'],
        components: {
            Greeter,
        },
    }
</script>


// ./HelloWorld.vue
<template>
    <hello who="World" @click="() => console.log('Clicked')" />
</template>
<script>
    import Hello from './Hello.vue'

    exports default {
        name: 'HelloWorld',
        components: {
            Hello,
        },
    }
</script>

React

const Greeter = ({ greet, who, handleClick }) => (
    <div>
        <span>{greet}, {who}</span>
        <button onClick={handleClick}>Click me</button>
    </div>
)

const Hello = (props) => <Greeter greet="Hello" {...props} />

const HelloWorld = () => <Hello who="World" handleClick={() => console.log('Clicked'))} />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment