Skip to content

useSolidForComponent

¥Summary

¥How to configure

biome.json
{
"linter": {
"rules": {
"performance": {
"useSolidForComponent": "error"
}
}
}
}

¥Description

强制使用 Solid 的 <For /> 组件将数组映射到 JSX 元素。

¥Enforce using Solid’s <For /> component for mapping an array to JSX elements.

在 Solid 中,使用 <For /> 组件可以高效地渲染列表。Array#map 会导致 DOM 元素被重新创建。

¥In Solid, <For /> component for efficiently rendering lists. Array#map causes DOM elements to be recreated.

有关 <For /> 组件的详细信息,请参阅 关于组件的详尽文档

¥For details on <For /> Component, see the Solid docs about Components.

¥Examples

¥Invalid

let Component = (props) => <ol>{props.data.map(d => <li>{d.text}</li>)}</ol>;
code-block.jsx:1:33 lint/performance/useSolidForComponent ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Array.prototype.map will cause DOM elements to be recreated, it is not recommended to use it in Solid here.

> 1 │ let Component = (props) => <ol>{props.data.map(d => <li>{d.text}</li>)}</ol>;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 │

Use Solid’s <For /> component for efficiently rendering lists. See Solid docs for more details.

let Component = (props) => <>{props.data.map(d => <li>{d.text}</li>)}</>;
code-block.jsx:1:31 lint/performance/useSolidForComponent ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Array.prototype.map will cause DOM elements to be recreated, it is not recommended to use it in Solid here.

> 1 │ let Component = (props) => <>{props.data.map(d => <li>{d.text}</li>)}</>;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 │

Use Solid’s <For /> component for efficiently rendering lists. See Solid docs for more details.

let Component = (props) => (
<ol>
{props.data.map((d) => (
<li key={d.id}>{d.text}</li>
))}
</ol>
);
code-block.jsx:3:6 lint/performance/useSolidForComponent ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Array.prototype.map will cause DOM elements to be recreated, it is not recommended to use it in Solid here.

1 │ let Component = (props) => (
2 │ <ol>
> 3 │ {props.data.map((d) => (
^^^^^^^^^^^^^^^^^^^^^^^
> 4 │ <li key={d.id}>{d.text}</li>
> 5 │ ))}
^^
6 │ </ol>
7 │ );

Use Solid’s <For /> component for efficiently rendering lists. See Solid docs for more details.

¥Valid

let Component = (props) => <ol><For each={props.data}>{d => <li>{d.text}</li>}</For></ol>;
let abc = x.map(y => y + z);
let Component = (props) => {
let abc = x.map(y => y + z);
return <div>Hello, world!</div>;
}

¥Related links