vue制作一个ui组件库(番外)

这里写自定义目录标题

说明

写在最前面,这篇文章的主题有两个。一个是制作后的组件库如何在本地自测;一个是遇到的传值的小问题!

在本地自测

项目开发中,可能会遇到自己研发vue-ui组件,并发布成npm包的问题。有问题还需要来回发布修改,非常的麻烦。
在组件库中新建一个example的文件夹,不需要再次cnpm i,保持组件库中有一个node_modules包就可以了。自测serve时,所需的依赖包会自动向外寻找依赖包的。

  1. 对源组件进行引入;
    在这里插入图片描述
    当然,每个人写组件的方式不同。这个示例里采用的是将组件作为插件,来看一下是怎么引入的。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 如何在需要组件库的项目中引入?比如botweb项目中需要用这个组件库。

首先,在 web-ui 中将代码打包,形成一个比如叫 lib 的文件夹;

然后,在项目的package.json中,加入对组件库的依赖,虽然还没发布;此处的版本号与组件库中保持一致就可以。

"dependencies": {
  "web-ui": "^0.0.1"
}

最后,在 web 项目的node_modules包中,新建一个 web-ui 的文件夹,并将 web-ui/lib 文件夹 + web-ui/package.json 放入其中。

最最后,启动 web 项目的本地开发命令就可以了。

遇到的小问题

这其实是个挺简单的问题,但实际中遇到还是懵住了。这是错误示例,看你能发现问题吗?

App.vue(父组件)

<template>
  <div class="conversation">
    <demo :messages="messages"></demo>
  </div>
</template>

<script lang="ts">
import { defineComponent, computed, onMounted } from 'vue'
import { useStore } from 'vuex'
import Demo from './Demo.vue'

export default defineComponent({
  name: 'Conversation',
  components: {
    [Demo.name]: Demo,
  },
  setup() {
    const store = useStore()
    let messages = computed(() => store.state.messages)
   
    const fetchMessageList = async () => {
      store.dispatch('listMessages', {
        conversationId: '1',
        startContributionId: '1',
        count: 20,
      })
    }
    onMounted(fetchMessageList)

    return {
      messages
    }
  },
})
</script>

Demo.vue(子组件)

<template>
  <div class="demo">
    <div v-for="(msg, idx) in messages" :key="idx">{{msg.content}}</div>
  </div>
</template>

<script lang="ts">
import { defineComponent, reactive } from 'vue'

export default defineComponent({
  name: 'Demo',
  props: ['messages'],
  setup(props) {
    let messages = reactive(props.messages)

    return {
      messages,
    }
  },
})
</script>

父组件初次加载子组件时,这个数组内的东西可以被子组件正常加载,但父组件往数组中推入新的元素后,子组件不更新了。

因为在demo组件中,对传入的messages做了一次本地化处理。这导致作为prop参数的messages失去了响应性。

解决办法:

1、可以对传入的messages做本地化处理,但需要监听来自父组件数据的变化并同步更新本地化后的messages;

2、去掉本地化处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue移动端UI组件,有两个比较受欢迎的选择是we-vue和veui。 we-vue是一套基于Vue.js的移动端组件,结合了weui.css样式,提供了35+个组件,具有完善的在线文档和详细的在线示例。we-vue适用于微信公众号等移动端开发。你可以在we-vue的官网https://wevue.org/了解更多信息。\[1\] veui是由百度EFE团队开发的Vue企业级UI组件。目前虽然还没有完整的文档,但有一些示例可供参考。veui的官网是https://ecomfe.github.io/veui/components/#/。你可以耐心等待官方的文档更新。\[2\] 除了we-vue和veui,还有其他一些Vue移动端UI组件可供选择。例如iView是一套基于Vue.js的开源UI组件,主要服务于PC界面的中后台产品。iView的组件齐全且更新迅速,有详细的文档和可靠的维护团队。iView已经被许多大型公司如阿里巴巴、腾讯、京东等应用在他们的产品中。你可以在iView的官网https://www.iviewui.com/了解更多信息。\[3\] 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [16款优秀的Vue UI组件推荐](https://blog.csdn.net/ywtech/article/details/119610530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值