满足对页面组件的动态渲染需求,目前包含 条件渲染 和 循环渲染。
条件渲染
需要用户自定义一个返回布尔值的函数,来决定当前组件是否渲染到页面上。函数参数 data 是 gs 下发给页面的全部数据。
示例函数
// @params data 参数为当前页面接受的 gs 下发的数据// @return booleanfunction isRender(data){return data.hasOkBtn;}
运行原理
isRender(data) ? <Button>按钮</Button> : null
循环渲染
需要用户自定义一个返回数组的函数,数组中每一项都直接展开传递给当前组件
实例函数
// @params data 参数为当前页面接受的 gs 下发的数据// @return Arrayfunction 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;})
