dcasia / mini-program-tailwind

让你的小程序用上原汁原味的 Tailwind/Windi CSS
https://www.craft.do/s/Wx2f9cjGwyZYOx
499 stars 41 forks source link

通过变量传入 className 中的自定义颜色比如 text-[#ddd] 在小程序编译有问题 #60

Open bluescurry opened 2 years ago

bluescurry commented 2 years ago

比如下面的代码,在微信小程序中编译出来的样式是class="text- ddd",正常应该是class="text---h-ddd-"

import { View } from '@tarojs/components';

const styles = 'text-[#ddd]';

const Demo = () => {
  return <View className={styles}>123</View>;
};

export default Demo;
bluescurry commented 2 years ago

补充一下,使用的是 Taro + react 开发~

Truimo commented 2 years ago

尝试使用最新版本看看 👀 #57

bluescurry commented 2 years ago

尝试使用最新版本看看 👀 #57

我用的是最新的1.5.3版本~

ItsRyanWu commented 2 years ago

为了节省插件编译的性能,故意没有对所有逻辑代码都做转译处理,目前仅针对 jsx markup 做了处理。

bluescurry commented 2 years ago

为了节省插件编译的性能,故意没有对所有逻辑代码都做转译处理,目前仅针对 jsx markup 做了处理。

了解,那是否可以支持下都处理呢,或者加一个开关由用户控制是否开启对 jsx markup 外的内容进行处理

ItsRyanWu commented 2 years ago

为了节省插件编译的性能,故意没有对所有逻辑代码都做转译处理,目前仅针对 jsx markup 做了处理。

了解,那是否可以支持下都处理呢,或者加一个开关由用户控制是否开启对 jsx markup 外的内容进行处理

有一点需要考虑的是如何防止插件误处理逻辑代码里与 className 无关的的文本字符串,比如你声明了 let a = 'The color is #000000' 本意是要用在其他地方,那如果不对插件逻辑做任何约束那它会把这串字符也一并做转译处理,这是应该极力避免的,所以目前插件采用了保守方案,仅针对 jsx markup 中与 className 相关的 field 做处理。

其实有两种方案可以让开发者选择性的让插件对逻辑代码里的字符串做转译处理

bluescurry commented 2 years ago

了解,那现在这两种方案有哪个是已经可以使用的吗,我个人更倾向于第一种方案

ItsRyanWu commented 2 years ago

了解,那现在这两种方案有哪个是已经可以使用的吗,我个人更倾向于第一种方案

目前还未着手解决,预计下个版本会加上第一个方案。

towry commented 3 months ago

目前 development 下是OK的,production下就出现了这个问题。使用的插件版本是1.5.7, taro: 3.6.34