最近选用的框架iview表单组件的render写法让人有点不习惯,尤为是在写比较复杂的逻辑的时候,仍是感受模板式的写法比较方便且可读性较强。而render函数除了支持配置写法外,还支持jsx的写法。因为以前有用过react,所以对jsx并不陌生,能够直接上手。vue
安装插件:transform-vue-jsx
若是须要使用v-model
还须要安装jsx-v-model
在babelrc
中配置node
"plugins": [["import", { "libraryName": "iview", "libraryDirectory": "src/components"}], "transform-vue-jsx", "transform-runtime"], "env": { "test": { "presets": ["env", "stage-2"], "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"] } }
下面粘贴的代码是Table
组件的columns
的配置项,这里须要注意的有2点:
一、须要全局注册组件,如输入框组件不能够写成Input
必须写成i-input
;
二、事件绑定:如点击事件须要携程onOn-click
react
{ title: "关系名", key: "name", width: 180, render: (h, params) => { let { index, row } = params; return ( <div> {this.editShow && this.editIndex === index ? ( <span> <i-input placeholder="中文" class="visual-name-input" value={this.editRow.cnName} onOn-blur={this.activeCellChange("cnName")} /> <i-input placeholder="英文" class="visual-name-input" value={this.editRow.name} onOn-blur={this.activeCellChange("name")} /> </span> ) : ( <span class="overflow" title={`${row.cnName}(${row.name})`} >{`${row.cnName}(${row.name})`}</span> )} </div> ); } }