Skip to content

Commit

Permalink
Add Component composition > Context for vue2 (#153)
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnsonMao authored Feb 10, 2023
1 parent 6dd15a3 commit a949e27
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 3 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ How do we solve this ? Developers love having framework overview by examples. It
<summary>
<img width="18" height="18" src="public/framework/vue.svg" />
<b>Vue 2</b>
<img src="https://us-central1-progress-markdown.cloudfunctions.net/progress/96" /></summary>
<img src="https://us-central1-progress-markdown.cloudfunctions.net/progress/100" /></summary>

- [x] Reactivity
- [x] Declare state
Expand All @@ -290,12 +290,12 @@ How do we solve this ? Developers love having framework overview by examples. It
- [x] Lifecycle
- [x] On mount
- [x] On unmount
- [ ] Component composition
- [x] Component composition
- [x] Props
- [x] Emit to parent
- [x] Slot
- [x] Slot fallback
- [ ] Context
- [x] Context
- [x] Form input
- [x] Input text
- [x] Checkbox
Expand Down
35 changes: 35 additions & 0 deletions content/4-component-composition/5-context/vue2/App.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<script>
import UserProfile from "./UserProfile.vue";
export default {
components: { UserProfile },
provide() {
return {
user: Object.assign(this.user, {
updateUsername: this.updateUsername,
}),
};
},
data() {
return {
user: {
id: 1,
username: "unicorn42",
email: "[email protected]",
},
};
},
methods: {
updateUsername(newUsername) {
this.user.username = newUsername;
},
},
};
</script>

<template>
<div>
<h1>Welcome back, {{ user.username }}</h1>
<UserProfile />
</div>
</template>
16 changes: 16 additions & 0 deletions content/4-component-composition/5-context/vue2/UserProfile.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<script>
export default {
inject: ["user"],
};
</script>

<template>
<div>
<h2>My Profile</h2>
<p>Username: {{ user.username }}</p>
<p>Email: {{ user.email }}</p>
<button @click="() => user.updateUsername('Jane')">
Update username to Jane
</button>
</div>
</template>

0 comments on commit a949e27

Please sign in to comment.