需求是想要自定義展示el-tree的項,官網有一個:render-content屬性,用的時候發現不管是使用class還是style,樣式都沒有生效,還會報一個錯,怎么個事呢,后來發現控制臺還會報一個錯“vue.js:5129 [Vue warn]: Failed to resolve directive: if”,
原來是在 Vue 3 中的 JSX 里,像v-if、v-show這類指令不能直接使用,而是要通過 JavaScript 條件表達式來替代,果然修改完之后就生效了。
修改前:
<el-tree:data="data"show-checkboxnode-key="id"default-expand-all:expand-on-click-node="false":render-content="renderContent"></el-tree>renderContent(h, { data }) {return (<span class="custom-tree-node"><span><spanv-if="data.isTickAgen === 1"style="display: inline-block; width: 14px; height: 14px; line-height: 14px;font-size:10px; text-align: center; background-color: #ffffff; color: #1472FF;border:1px solid #1472FF; border-radius: 50%; margin-right: 2px;">證</span>{data?.data?.agenCode}{data?.data?.agenName}</span></span>)}
修改后:
renderContent(h, { data }) {return (<span class="custom-tree-node"><span>{data.isTickAgen === 1 && (<spanstyle="display: inline-block; width: 14px; height: 14px; line-height: 14px;font-size:10px; text-align: center; background-color: #ffffff; color: #1472FF;border:1px solid #1472FF; border-radius: 50%; margin-right: 2px;">證</span>)}{data?.data?.agenCode}{data?.data?.agenName}</span></span>);
}