【发布时间】:2019-01-06 08:10:13
【问题描述】:
我使用 vuetify 组件创建了一个 Snackbar 组件,并将该 snapbar 组件导入到其他一些组件。我正在将道具从父母发送到孩子小吃店组件。小吃店会在一段时间后自动关闭。此时会出现错误,例如“避免直接更改道具,因为每当父组件重新渲染时,该值将被覆盖。相反,请使用基于道具值的数据或计算属性”。
小吃店会在 3 秒后自动关闭。关闭小吃店后如何将状态设置为 false。
Snackbar 组件
<v-snackbar
:timeout="timeout"
:color="color"
:top="y === 'top'"
:bottom="y === 'bottom'"
:right="x === 'right'"
:left="x === 'left'"
:multi-line="mode === 'multi-line'"
:vertical="mode === 'vertical'"
v-model="snackbar"
>
{{ text }}
<v-btn flat color="pink" @click.native="snackbarClose"><v-icon>{{close}}</v-icon></v-btn>
</v-snackbar>
道具
props: ["snackbar", "y", "x", "mode", "timeout", "color", "close", "text", "submit"],
snackbar 组件中的方法
methods: {
snackbarClose () {
this.$store.commit("snackbarClose", false)
// this.$emit('snackbarClose', false)
}
}
父组件
<Snackbar
:close="close"
:snackbar="snackbarBox"
:y="y"
:x="x"
:mode="mode"
:timeout="timeout"
:color="snackbarColor"
:text="snackbarText"
:submit="text"
/>
父组件中的数据
data(){
return{
y: "top",
x: "right",
mode: "multi-line",
timeout: 3000,
text: "",
color: "",
close: "close",
}
}
在父组件中导入 getter
...mapGetters([ "snackbarBox"])
vuex 变异
snackbarClose: (state, payload) => {
state.snackbarBox = payload
},
状态
snackbarBox: false,
吸气剂
snackbarBox: state => {
return state.snackbarBox;
},
如何解决?
【问题讨论】:
标签: vue.js vuejs2 vuex vuetify.js