【发布时间】:2021-01-09 12:14:54
【问题描述】:
我正在使用 Ant Design 制作自定义树。
我有一个带有 color 属性的 treeData,我通过将该 treeNode 的 ref 绑定到 treeNodeRef 中创建了一个 treeNode ref 数组。
<TreeNode ref={(ref) => (treeNodeRef.current[key] = ref)}>
然后迭代 treeNodeRef 以改变该 treeNode 的样式,如下所示:
useEffect(() => {
treeNodeRef.current.forEach((element, index) => {
element.style.backgroundColor = treeRef.state.treeData[index].color;
console.log(element);
});
}, [treeNodeRef, treeRef]);
但是我的treeNode.current总是空的,怎么回事?
我可以这样改变treeNode吗?
每个TreeNode组件都有一个checkbox,那么如何改变那个checkbox的样式呢?
这是我的代码:https://codesandbox.io/s/controlled-tree-antd4100-forked-e29pk
【问题讨论】:
-
您的假设是有一个
element.style.backgroundColor属性。但是TreeNode是一个自定义组件,你需要检查element有什么props,因为你不知道内部实现(或者只是检查antdgithub) -
附带说明,antd 是一个设计系统,这意味着你不应该改变它的样式
-
我就是这么想的,大家有什么建议吗?我必须自定义它:3
-
您可以通过 CSS 检查样式并覆盖它来“破解”css。但问题在于“我必须自定义它”,这更像是一个设计错误,您可能应该选择更多允许样式化的模块化组件 - 在 antd 中它非常难且不可维护。
-
@DennisVash 你知道任何库都可以做到吗?