【发布时间】:2021-07-30 14:24:14
【问题描述】:
我正在尝试检查按钮的高度是否为 50 以显示不同的微调器,但即使高度为 50 也会显示 SpinnerTwo,有人知道问题所在吗?
const Button = styled.button`
height: 50px;
`
const ButtonLoading(){
const refButton = useRef<HTMLButtonElement | null>(null);
return(
<Button ref={refButton} onClick={onClick} >
{refButton.current?.clientHeight === 50 ? <SpinnerOne /> : <SpinnerTwo />}
</Button> )
}
【问题讨论】:
-
设置 ref 后不会重新渲染。
clientHeight === 50似乎非常具体。这里到底发生了什么?为什么会特别是 50?我闻起来就像你在别处设置了这个高度。是这样吗? -
是的,我有一个设置为 50px 高度的按钮样式组件和另一个设置 60px 高度的组件,默认情况下,该组件应在其返回中使用 50px。我编辑了我的代码以显示示例
-
我的意思是,您正在逆转这里的信息流。您正在使用隐含在渲染 DOM 中的信息作为一种辅助的推断状态。这绝不是个好主意。实际应用程序状态中必须有一些信息导致此按钮以一种或另一种方式呈现。为什么你不能使用相同的信息来推动这个决定?
-
朋友,我有几个组件继承自同一个组件。这个继承的每个变体都有不同的高度,但是我根据父组件的状态来渲染它们。
标签: javascript reactjs typescript react-native