vue.js - 如何将 vmodel 属性传递给 nuxjs 中的子组件
问题描述
我似乎无法将动态修改的属性从布局传递到<Nuxt />
组件中。
这是我的~/layouts/default.vue
<template>
<div>
<input v-model="myprop" />
<span>{{myprop}}</span>
<Nuxt />
</div>
</template>
<script>
export default {
provide: function () {
return {myprop: this.myprop};
},
data: () => ({
myprop: 'hello galaxy',
}),
}
</script>
这是我的~/pages/index.vue
<template>
<div>My Prop is: {{myprop}}</div>
</template>
<script>
export default {
inject: ["myprop"]
}
</script>
在网页上,我看到hello galaxy
打印了 3 次,一次在输入中,一次在跨度中,一次在 Nuxt 组件中。但是当我编辑输入字段时,只有跨度被更新。Nuxt 组件不会捕获myprop
. Nuxt 组件仅在输入时继续显示hello galaxy
,并且跨度显示更改时我在键盘上键入
我究竟做错了什么?
解决方案
提供/注入对于简单的情况很有用,但是如果你有一些反应性的东西,vuex 存储更方便:
在store/index.js
添加一个名为的状态search
及其突变和动作:
export const state=()=>({
search:''
})
export const mutations ={
SET_SEARCH(state,payload){
state.search=payload
}
}
export const actions ={
setSearch(context,payload){
context.commit('SET_SEARCH',payload)
}
}
layout/default.vue
添加绑定到存储的 setter/getter 的计算属性:
<template>
<div>
<input v-model="search" />
<span>{{search}}</span>
<Nuxt />
</div>
</template>
<script>
export default {
computed:{
search:{
get(){
return this.$store.state.search
},
set(val){
this.$store.dispatch('setSearch',val)
}
}
}
}
</script>
在pages/index.vue
:
<template>
<div>My search is: {{search}}</div>
</template>
<script>
export default {
computed:{
search(){
return this.$store.state.search
}
}
}
</script>
推荐阅读
- javascript - 404在javascript中找不到图像
- java - marytts:marytts-lang-ar:5.1-SNAPSHOT的不可解析父POM:找不到工件marytts:marytts:pom:5.1-SNAPSHOT
- java - Quarkus 初创公司抱怨不推荐使用的属性
- c - PAPI 似乎依附于它的进程
- javascript - Web Worker 缺少获取响应标头
- c++ - 将结构数组从 C++ 传递到 GO
- git - Git从URI获取新分支而不将其添加为远程
- c# - 视图绑定给出了一条消息,但一切正常
- javascript - 如何让网页立即进入全屏
- android - 独特的协程 Kotlin