Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自定义组件使用时有问题 #25

Open
4 tasks done
ModyQyW opened this issue Sep 27, 2023 · 3 comments
Open
4 tasks done

自定义组件使用时有问题 #25

ModyQyW opened this issue Sep 27, 2023 · 3 comments
Labels
bug Something isn't working enhancement New feature or request help wanted Extra attention is needed

Comments

@ModyQyW
Copy link
Member

ModyQyW commented Sep 27, 2023

描述问题

b8a5c909dfab3bc19f810fd457ed1156

问题的根源在于自定义组件的 props 不是直接传递的,而是经过 js 文件内的 renderProps。

复现

https://github.com/MillCloud/presets/tree/main/uni-app

系统信息

/

使用的包管理器

npm

核对

  • 遵循我们的 行为准则
  • 检查是否已经有一个报告相同错误的问题,以避免重复创建。
  • 这是一个具体的错误。请开启 GitHub 讨论你的疑问。
  • 所提供的复现是这个问题的 最小复现
@ModyQyW ModyQyW added bug Something isn't working enhancement New feature or request help wanted Extra attention is needed labels Oct 10, 2023
@ModyQyW
Copy link
Member Author

ModyQyW commented Oct 10, 2023

🤔 这个问题的复杂度远超我的想象(毕竟我是个废物 😅

目前用 babel 做的思路和部分初步实现

  1. 找到 vendor.js,解析 AST 获取调用 renderProps 的方法的名字 renderPropsExportName
image image
  1. 遍历处理 pages、layouts、components 目录下的 js 文件(目录应当可以自定义,如果遍历所有 js 文件会造成性能损耗,所以固定目录比较好)
image

解析 AST 找到导入 vendor.js 得到的变量 commonVendorName,然后找到对应的调用,再修改对应的值

image

复杂性源于对应的值有很多可能性:

  1. ref
  2. shallowRef
  3. reactive
  4. object
  5. string
  6. array
  7. ...

目前打算先支持 string 和 object,其它类型延后处理。

最后向 babel 致敬 🫡

@ModyQyW
Copy link
Member Author

ModyQyW commented Oct 13, 2023

0.14.0-0 已经发布,支持 string

@ModyQyW
Copy link
Member Author

ModyQyW commented Nov 27, 2023

0.14.2 已经发布,支持 object

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant