【发布时间】:2019-10-31 12:46:20
【问题描述】:
我有以下父组件的模板:
<template>
<v-card class="pa-3 teal darken-3" flat height="100%">
<ReportesViales v-bind:visualizar="sheet"></ReportesViales>
<l-map class="map" :zoom="zoom" :center="center" :options="{ zoomControl: false }">
<l-tile-layer :url="url"></l-tile-layer>
<l-marker :lat-lng="marker">
<l-popup></l-popup>
</l-marker>
<l-control position="bottomleft" >
<v-btn flat icon color="indigo" @click="ubicacion">
<v-icon>my_location</v-icon>
</v-btn>
<v-btn flat icon color="indigo" @click="sheet = true">
<v-icon>add_alert</v-icon>
</v-btn>
</l-control>
</l-map>
</v-card>
</template>
我有一个名为“ReportsViales”的子组件。
我将变量“sheet”作为参数发送到该变量,该变量基本上可以是真或假,布尔类型。
在子组件中我通过以下方式接收它:
<template>
<v-bottom-sheet v-model="visualizar">
<v-list>
<v-subheader>Opciones</v-subheader>
<v-list-tile
v-for="tile in tiles"
:key="tile.title"
@click="visualizar = false"
>
<v-list-tile-avatar>
<v-icon :color="tile.color">{{tile.icon}}</v-icon>
</v-list-tile-avatar>
<v-list-tile-title>{{ tile.title }}</v-list-tile-title>
</v-list-tile>
</v-list>
</v-bottom-sheet>
</template>
<script>
import firebase from 'firebase';
export default {
props:['visualizar'],
data(){
return {
tiles: [
{ icon: 'notification_important', title: 'Solicitar apoyo', color: '#00695C', tipo: 1 },
{ icon: 'warning', title: 'Reportar alerta', color: '#01579B', tipo: 2 },
{ icon: 'commute', title: 'Transito pesado', color: '#1B5E20', tipo: 3 },
{ icon: 'directions_car', title: 'Transito fluido', color: '#3E2723', tipo: 4 },
{ icon: 'departure_board', title: 'Bloqueado totalmente', color: '#FF3D00', tipo: 5 }
]
}
}
}
</script>
它实际上对我有用一次,但是当我想继续使用此组件时,出现以下错误,并且子组件不再起作用:
避免直接修改 prop,因为每当父组件重新渲染时,该值都会被覆盖
【问题讨论】:
-
定义本地数据属性可视化工具。这样你就可以从 props 中获取默认值,并且可以修改它的值。 vuejs.org/v2/guide/components-props.html#One-Way-Data-Flow
标签: vuejs2