Skip to content

自定义jsx

因为目前的低代码配置满足不了一些定制化场景的需要,类似于表格单元格的内容,步骤条的内容等,需要可以自定义内容展示,我们在渲染函数中增加可返回jsx语法,便于用户自定义渲染内容。

Vue中使用jsx注意点

1、事件处理:在 JSX 中,你需要使用 on 前缀来监听事件,而不是 v-on。例如,使用 onClick 而不是 v-on:click

html
<button onClick={this.handleClick}>Click me</button>

2、v-for:在 JSX 中,你不能直接使用 v-for 指令。你需要使用 JavaScript 的 map 函数来遍历数组。

javascript
{this.items.map(item => <li>{item}</li>)}

3、v-model:在 JSX 中,你不能直接使用 v-model 指令。你需要手动实现数据双向绑定。例如,使用 value 属性和 input 事件

html
<input
  value={this.message}
  onInput={event => {
    this.message = event.target.value;
  }}
/>

4、v-show:在 JSX 中,你不能直接使用 v-show 指令。你需要使用 style 属性来控制元素的显示和隐藏。

html
<div style={{ display: this.isVisible ? 'block' : 'none' }}></div>

5、v-html 和 v-text:在 JSX 中,你不能直接使用 v-html 和 v-text 指令。你需要使用 innerHTML 属性和 {} 表达式

html
<div innerHTML={this.htmlContent}></div>
<p>{this.textContent}</p>

6、样式

style 方式:

html
<div style="background: #fff"></div>

class 方式: 在组件的自定义样式配置中添加 class, 例如:

less
:rootnode {
  .custom-style {
    background: #fff;
  }
}

自定义渲染函数示例

javascript
function render(ctx, params) {
  const spanClick = () => {
   ctx.setState({
        text: "hello!!!"
    });
  }
  return (<div>
  <span style={{color: "pink"}}>{params.item.title}</span>
  <span style={{color: "purple"}} onClick={spanClick}>
    {ctx?.state?.text}
    <i>hahah</i>
  </span>
  </div>)
}