满足对页面组件的动态渲染需求,目前包含 条件渲染 和 循环渲染。
条件渲染
需要用户自定义一个返回布尔值的函数,来决定当前组件是否渲染到页面上。函数参数 data 是 gs 下发给页面的全部数据。
示例函数
// @params data 参数为当前页面接受的 gs 下发的数据
// @return boolean
function isRender(data){
return data.hasOkBtn;
}
运行原理
isRender(data) ? <Button>按钮</Button> : null
循环渲染
需要用户自定义一个返回数组的函数,数组中每一项都直接展开传递给当前组件
实例函数
// @params data 参数为当前页面接受的 gs 下发的数据
// @return Array
function forRender(data){
return [
[
children:"按钮1"
],
[
children:"按钮2"
]
]
}
运行原理
forRender(data).map(fucntion(item){
return <Button {...item} ></Button>
})
渲染器的组合规则
渲染器会叠加执行,通过这种叠加的机制,可以实现复杂的动态渲染规则。
以下代码能清晰展示执行逻辑。
条件渲染 + 循环渲染
- 渲染器设置示例 ```jsx
- isRender(data)
- forRender(data) ```
- 执行逻辑
当条件满足的时候,会执行第二个渲染器。
isRender(data) ? forRender(data).map(function(item){
return <Button {...item} ></Button>
}) : null
循环渲染 + 条件渲染
- 渲染器设置示例 ```jsx
- forRender(data)
- isRender(data) ```
- 执行逻辑
在循环渲染中,会增加条件判断。 注: 在 for 循环中条件渲染器的第一个参数更改为迭代器的 item
forRender(data).map(function(item){
return isRender(item) ? <Button {...item} ></Button> : null;
})
复杂组合
<Button></Button>
+ forRender(data)
+ isRender(data)
+ isRender(data)
+ forRender(data)
forRender(data).map(function(item){
return isRender(item) ?
isRender(data) ?
forRender(data).map(function(it){
return <Button {...it} ></Button>
})
: null
: null;
})