Open hzwjz opened 1 year ago
例如 listSetter 的 value 根据 props.setting的值来重新生成数组
<ListSetter ref={(ref) => { if (ref) { const settings = this.getProps().getPropValue('settingId'); const columns = this.getProps().getPropValue('columns'); if (settings) { const { tableRules } = settings; // 列字段配置 // 检查是否有变化 if (!isTableRulesChange(columns, tableRules)) { return; } const options = mergeColumns(columns, tableRules); // 将列字段配置 和 列其他配置 合并 ref.list.prop.setHotValue(options); ref.list.updateItems(ref.list.prop); ref.forceUpdate(); } } }} descriptor={getDescriptor('title')} checkField={null} addable={false} deletable={false} draggable={false} editable display="drawer" configure={[ { name: 'id', title: 'ID', display: 'none', editable: false, setter: <TextSetter readOnly />, }, { name: 'title', title: '标题', display: 'inline', initialValue: '', editable: false, setter: <TextSetter readOnly />, }, { name: 'dataKey', title: '数据字段', display: 'inline', initialValue: '', editable: false, setter: <TextSetter readOnly />, }, { name: 'width', title: '宽度', display: 'inline', initialValue: 200, setter: ( <NumberSetter units={[ { type: 'px', list: true, }, { type: '%', list: true, }, ]} /> ), supportVariable: true, }, { name: 'align', title: '对齐方式', display: 'inline', initialValue: 'left', setter: ( <ChoiceSetter options={[ { value: 'left', title: '居左' }, { value: 'center', title: '居中' }, { value: 'right', title: '居右' }, ]} /> ), supportVariable: true, }, { name: 'lock', title: '列固定', display: 'inline', initialValue: 'none', setter: ( <ChoiceSetter options={[ { value: 'none', title: '无' }, { value: 'left', title: '左' }, { value: 'right', title: '右' }, ]} /> ), supportVariable: true, }, { name: 'sortable', title: '显示排序', display: 'inline', initialValue: false, setter: <BoolSetter />, supportVariable: true, }, { name: 'hidden', title: '是否隐藏', display: 'inline', initialValue: false, setter: <BoolSetter />, supportVariable: true, }, { name: 'groupName', title: '分组标题', display: 'inline', initialValue: '', setter: <TextSetter />, supportVariable: true, }, { name: 'render', title: '内容定制渲染', display: 'accordion', setter: ( <ActionSetter defaultCode={`/** * 表格列自定义渲染 * @param value 当前列的数据 * @param index 当前行所在的行号 * @param rowData 当前行的数据 */ function renderCell(value, index, rowData) { return <span>{value}</span>; }`} defaultActionName="renderCell" /> ), }, ]} />
在settingId中的tableRules变化时,listSetter的value也可以实时变化
但现在的现象是偶尔会变化,不是每一次listSetter都会重新渲染
https://lowcode-engine.cn/site/docs/guide/expand/editor/setter
如何在物料组件内部修改它自身定义的props, 很重要!!!!!!!
比如组件内部定义了个props: articleInfo ---> string, 并且包含按钮,点击之后更新articleInfo
ArraySetter 会有这个问题,target.parent.setPropsValue('XX',[]) value已经改了,但是dom没有渲染 其他类型暂时未发现
我想实现listSetter的value跟另一个props属性值联动
例如 listSetter 的 value 根据 props.setting的值来重新生成数组
目前代码是这么写的
Expected behavior (required) / 预期行为(必填,非常重要)
在settingId中的tableRules变化时,listSetter的value也可以实时变化
Screenshots (optional) / bug 截图(可选)
但现在的现象是偶尔会变化,不是每一次listSetter都会重新渲染
Environments (please complete the following information) (required): / 请提供如下信息(必填)