Skip to content

条件渲染

J20 提供了 IfSomeSwitch 组件来处理条件渲染。

If 组件

If 用来处理简单的条件渲染

tsx
import { If } from "j20";

let $visible = true;

<If of={$visible} else={<div>invisible</div>}>
  <span>visible</span>
</If>;

Switch 组件

Switch 用来处理多条件渲染,只渲染第一个 of = true 的 Case 项,用于多个互斥条件下的渲染,Default 则是默认项

tsx
import { Switch, Case, Default } from "j20";

let $value = 1;

<Switch>
  <Case of={$value === 1}>1</Case>
  <Case of={$value === 2}>2</Case>
  <Default>default</Default>
</Switch>;

Some 组件

Some 组件用于处理可能为 nullundefined 的值,当 of 属性不为 nullundefined 时渲染子组件函数,否则渲染 none 内容。

在遇到可选链的时候使用,拥有完善的 Typescript 类型提示,大幅提升开发体验。

tsx
import { Some } from "j20";

let $data: { person?: { name: string } } | undefined;

<Some of={$data?.person} none={<div>No data</div>}>
  {($person) => <div>Hello {$person.name}</div>}
  {/* $person 非空而且是信号值 */}
</Some>;