当前位置: 首页 > wzjs >正文

2019做网站赚钱么山西优化公司

2019做网站赚钱么,山西优化公司,住房和城乡建设部网站共有产权,网站优化的好处在 Vue 中创建子组件需要遵循组件化开发的核心原则,并注意数据流、通信机制、复用性等关键点。以下是详细步骤和注意事项,结合代码示例说明: 一、创建子组件的步骤 1. 定义子组件 创建一个 .vue 文件(单文件组件)&am…

在 Vue 中创建子组件需要遵循组件化开发的核心原则,并注意数据流、通信机制、复用性等关键点。以下是详细步骤和注意事项,结合代码示例说明:


一、创建子组件的步骤

1. 定义子组件

创建一个 .vue 文件(单文件组件),包含模板、逻辑和样式:

<!-- ChildComponent.vue -->
<template><div class="child"><h3>{{ title }}</h3><button @click="handleClick">点击我</button></div>
</template><script>
export default {props: {title: {type: String,required: true}},emits: ['button-clicked'], // 声明触发的事件methods: {handleClick() {this.$emit('button-clicked', '来自子组件的消息');}}
};
</script><style scoped>
.child {border: 1px solid #ccc;padding: 20px;
}
</style>
2. 在父组件中引入并使用子组件
<!-- ParentComponent.vue -->
<template><div class="parent"><ChildComponent title="子组件标题"@button-clicked="handleChildEvent"/></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},methods: {handleChildEvent(message) {console.log(message); // 输出:"来自子组件的消息"}}
};
</script>

二、关键注意事项

1. 组件通信
  • 父 → 子:通过 props 传递数据。

    • 单向数据流:子组件不能直接修改 props,需通过事件通知父组件修改。
    <!-- 父组件传递数据 -->
    <ChildComponent :title="parentTitle" /><!-- 子组件接收 -->
    <script>
    export default {props: ['title']
    };
    </script>
    
  • 子 → 父:通过 $emit 触发事件。

    <!-- 子组件触发事件 -->
    <button @click="$emit('update', newValue)">提交</button><!-- 父组件监听 -->
    <ChildComponent @update="handleUpdate" />
    
2. 插槽(Slots)

用于在子组件中插入动态内容,增强复用性:

<!-- 子组件 ChildComponent.vue -->
<template><div class="card"><slot name="header"></slot><slot>默认内容(当父组件不传递内容时显示)</slot></div>
</template><!-- 父组件使用 -->
<ChildComponent><template #header><h2>自定义标题</h2></template><p>这是父组件插入的内容</p>
</ChildComponent>
3. 作用域样式

使用 <style scoped> 隔离子组件样式,避免全局污染:

<style scoped>
/* 仅对当前组件生效 */
.child {background: #f0f0f0;
}
</style>
4. 性能优化
  • 避免不必要的渲染

    • 使用 v-once 静态缓存:
      <div v-once>{{ staticContent }}</div>
      
    • 复杂数据使用 computed 属性缓存:
      computed: {filteredList() {return this.list.filter(item => item.active);}
      }
      
  • 异步组件:按需加载子组件(Vue 3):

    const ChildComponent = defineAsyncComponent(() => import('./ChildComponent.vue'));
    
5. Props 设计规范
  • 类型检查:明确数据类型和默认值。

    props: {count: {type: Number,default: 0,validator: (value) => value >= 0}
    }
    
  • 复杂对象传递:使用 v-bind 绑定对象:

    <!-- 父组件 -->
    <ChildComponent v-bind="userData" /><!-- 等价于 -->
    <ChildComponent :name="userData.name" :age="userData.age" />
    
6. 事件命名规范
  • 自定义事件名:建议使用 kebab-case(短横线命名),避免与原生事件冲突。
    <!-- 子组件触发 -->
    this.$emit('custom-event', data);<!-- 父组件监听 -->
    <ChildComponent @custom-event="handler" />
    

三、Vue 3 的新特性

1. 组合式 API(Composition API)

更灵活的逻辑复用方式(推荐在复杂组件中使用):

<script setup>
import { ref, defineProps, defineEmits } from 'vue';const props = defineProps({title: String
});
const emit = defineEmits(['button-clicked']);const handleClick = () => {emit('button-clicked', '来自子组件的消息');
};
</script>
2. 多个 v-model 绑定

支持在单个组件上绑定多个 v-model

<!-- 父组件 -->
<ChildComponent v-model:name="userName" v-model:age="userAge" /><!-- 子组件 -->
<script setup>
defineProps(['name', 'age']);
defineEmits(['update:name', 'update:age']);
</script>

四、常见问题与解决方案

1. Props 未触发更新
  • 问题:直接修改对象/数组类型的 props(如 props.list.push(newItem))。
  • 解决:深拷贝数据或通过事件通知父组件修改。
2. 样式污染
  • 问题:未使用 scoped 导致样式影响全局。
  • 解决:始终添加 <style scoped> 或使用 CSS Modules。
3. 事件未触发
  • 问题:未在子组件中声明 emits(Vue 3 中会警告)。
  • 解决:显式声明 emits 选项。

五、总结

核心要点实现方式
创建子组件单文件组件(.vue),包含 <template>, <script>, <style>
父子通信props(父 → 子),$emit(子 → 父)
插槽<slot> 插入动态内容,<slot name="header"> 具名插槽
样式隔离<style scoped> 或 CSS Modules
性能优化v-oncecomputed、异步组件
Vue 3 特性组合式 API、<script setup>、多个 v-model

通过合理设计组件职责、规范通信机制、优化渲染性能,可以构建 高复用、易维护 的 Vue 子组件。

http://www.dtcms.com/wzjs/204315.html

相关文章:

  • .net网站开发书关键字排名优化工具
  • 无锡宜兴网站建设专业关键词优化平台
  • 临朐网站建设建站网站快速排名优化
  • 长沙网站优化排名推广360搜图片识图
  • 个人承接网站开发服务互联网推广渠道有哪些
  • 做一个平台网站大概多少钱哈尔滨seo优化软件
  • wordpress调用taxonomy优化设计方法
  • 大帮手网站建设网络营销的概述
  • 如何做网站限制策略软文怎么做
  • 网站建设团队介绍怎么写网站设计制作哪家好
  • 做特卖网站有什么网站网络推广渠道分类
  • 为什么做网站备案的人态度差百度一下百度官网
  • 中江建设局网站优化排名seo
  • 古风模板网百度关键词优化工具
  • 网站开发设计价格公众号推广引流
  • 滕州市做淘宝网站的站长之家ppt模板
  • .net网站 开发iis7站长工具
  • 厦门建设局网站中标结果查询备案查询
  • 网站建设一般花多少费用百度一下首页官网百度
  • 游戏推广怎么快速拉人排名优化关键词
  • 品牌网站设计工作室网络建站平台
  • 做搜狗网站优化首页软长沙seo排名优化公司
  • 专业邯郸做网站qq群推广引流免费网站
  • 园区网站到底怎么建设seo代码优化包括哪些
  • htmlcss网页设计代码北京seo服务商找行者seo
  • 大淘客网站如何做制作谷歌关键词推广怎么做
  • 想要自己做一个网站怎么做域名注册腾讯云
  • 在wordpress主题后台安装了多说插件但网站上显示不出评论模块热门关键词查询
  • wordpress主题图标乱码seo优化技巧有哪些
  • 微信漫画网站模板站长工具ip地址查询