Crates.io | swc_plugin_jsx_attrs |
lib.rs | swc_plugin_jsx_attrs |
version | 0.2.0 |
source | src |
created_at | 2023-06-13 17:30:55.024845 |
updated_at | 2023-06-14 15:57:39.940599 |
description | SWC plugin for JSX attrs |
homepage | |
repository | |
max_upload_size | |
id | 889305 |
size | 24,994 |
此 swc 插件用于为符合条件的 jsx element 注入参数。
babel 版本 UNDERCOVERj/babel-plugins
单个组件可以注入多个属性,默认前置追加,也可以通过配置 rule: append
追加到尾部。
{
"@fixture/my-components": {
"Button": [{ "name": "type", "value": "primary" }],
"Link": [{ "name": "type", "rule": "append", "value": "primary" }]
}
}
import { Button, Link } from "@fixture/my-components";
export function MyPage() {
return (
<>
- <Button onClick={console.log} />
+ <Button type={"primary"} onClick={console.log} />
- <Link href="/" />
+ <Link href="/" type={"primary"} />
</>
);
}
{
"@fixture/my-components": {
"Dropdown.Link": [{ "name": "type", "value": "primary" }]
}
}
import { Dropdown, Noop } from "@fixture/my-components";
import * as components from "@fixture/my-components";
export function MyPage() {
return (
<>
<Noop />
- <Dropdown.Link />
+ <Dropdown.Link type={"primary"} />
<components.Noop />
- <components.Dropdown.Link />
+ <components.Dropdown.Link type={"primary"} />
</>
);
}
{
"@fixture/my-components": {
"Button": [{ "name": "type", "value": "primary" }],
"Link": [{ "name": "type", "value": "primary" }]
}
}
import { Button } from "@fixture/another-components";
import { Button as MyButton, Link } from "@fixture/my-components";
export function MyPage() {
return (
<>
- <Link />
+ <Link type={"primary"} />
- <MyButton />
+ <MyButton type={"primary"} />
</>
);
}
export function createPage() {
function Link() {
return null;
}
return () => (
<>
<Link />
<Button />
</>
);
}