【发布时间】:2020-05-03 15:57:42
【问题描述】:
我有一个使用 Material UI 的 React 应用程序,该应用程序带有一个如下所示的组件(我们可以称之为 DatePicker),为了演示目的而偷偷改变了。
Material UI 为点击和其他与其组件的交互设置动画。当单击已选择的单选按钮或不改变状态的“时间按钮”时,此动画在上方可见。但是,当这样的点击改变状态时,动画就会中断。
我可以从技术角度理解为什么会发生这种情况; DatePicker 组件调用 setMinutes,这是从其父级(状态所在的位置)传入的属性。这是一个React.useState 变量,然后更新其对应的minutes 变量。然后将分钟传递给DatePicker,由于道具更改而重新渲染。
如果状态存在于DatePicker 内,那么这个问题不应该出现;然而,DatePicker 是一个更大的表格的一部分,它规定了父表格的内容。要为该表生成行,父级必须具有此信息。
以下是父级的示例重建:
const Parent = () => {
const [minutes, setMinutes] = React.useState(15);
const [radioOption, setRadioOption] = React.useState('Thank You');
// Many other state variables here to hold other filter information
return (<div>
<DatePicker minutes={minutes} setMinutes={setMinutes} radioOption={radioOption} setRadioOption={setRadioOption}/>
</div>);
};
这里是DatePicker的样本重建:
const DatePicker: React.FC<DatePickerProps> = props => {
const {minutes, setMinutes, radioOption, setRadioOption} = props;
return (<div>
<Radios value={radioOption} onChange={val => setRadioOption(val)}/>
<Minutes value={minutes} onChange{val => setMinutes(val)}/>
</div>);
};
我不确定在这种情况下最佳做法是什么,但我有一种明显的感觉,那就是不是这样。有人有建议吗?提前致谢!
【问题讨论】:
-
请提供一个code sandbox 来重现您的问题。
标签: reactjs typescript material-ui css-transitions react-props