因此,我有一个DatePicker ChildComponent,我需要从父级通过forwardRef
访问它的ref
。基本上一切正常。
但有一个问题。
每次我更新与DatePickerChildComponents没有任何关系的父其他儿童组件时,DatePicker仍然在渲染,即使它不应该渲染。
我试图删除从父级到子级的ref传递,然后每当我更新我想要解决的其他组件时,组件不再重新提交。
<NativeDatePicker
ref={datePickerRef} // <-- When I comment this component is not rendering anymore.
currentDate={values.birthday}
onDateChange={handleBirthdayChange}
/>
我已经开始使用回调备忘录,通过使用useCallback
来优化,但仍然没有运气。
下面是我的代码:
DatePicker.tsx
type Props = {
// ref: RefObject<DatePicker>;
currentDate: string | Date | undefined;
onDateChange: (newDate: string) => void;
};
const NativeDatePicker = forwardRef(
({ currentDate, onDateChange }: Props, ref: any) => {
console.log('tadah!');
return (
<DatePicker
ref={ref}
style={wrapperStyle.wrapper}
date={currentDate}
mode="date"
placeholder="select date"
format="YYYY-MM-DD"
// minDate="2016-05-01"
// maxDate={Date.now()}
confirmBtnText="Confirm"
cancelBtnText="Cancel"
customStyles={styles}
onDateChange={onDateChange}
/>
);
},
);
const MemoizedNativeDatePicker = memo(NativeDatePicker);
我不会显示ParentComponent中的所有代码,只显示传递给DatePicker的props和refs。
// Memoized Callback Function
const handleBirthdayChange = useCallback(
(newDate: string) => setFieldValue('birthday', newDate),
[setFieldValue],
);
const datePickerRef = createRef<DatePicker>();
const datePickerRefOnPress = () => datePickerRef.current!.onPressDate();
我是不是漏了什么?感谢任何帮助。
您正在使用createRef
创建一个ref,它在每次重新渲染时都会返回一个新的ref实例,因此会导致使用React优化子重新渲染失败。备忘录
。
相反,您应该为函数组件使用useRef
钩子来创建ref
const datePickerRef = useRef<DatePicker>();
问题内容: 我刚开始使用Python,却不知道什么是记忆以及如何使用它。另外,我可以举一个简化的例子吗? 问题答案: 记忆有效地指基于方法输入记忆方法调用的结果(“记忆”→“备忘录”→要记忆),然后返回记忆的结果,而不是再次计算结果。你可以将其视为方法结果的缓存。有关更多详细信息,请参见第387页的Cormen等人的《算法简介》(3e)中的定义。 一个简单的示例,使用Python中的记忆来计算阶乘
如何使用备忘录模式 在 ViewController.swift 里加上下面两个方法: //MARK: Memento Pattern func saveCurrentState() { // When the user leaves the app and then comes back again, he wants it to be in the exact same state
问题内容: 我有一个包含10个元素的div,这些元素将被逐个更新,延迟时间为2秒。下面是相同的代码 但是,当我运行它时,所有元素都会一起更新。该程序只是添加一个延迟添加一个开始,并且所有元素都一起更新(被标记)。如何制作代码来逐一标记元素? 问题答案: 您正在打破React的两个基本规则: 不要直接改变状态 如果根据现有状态更新状态,请使用回调形式,因为状态更新可能是异步的(无论如何,在您的示例中
问题内容: 我还没有找到明确的答案,希望这不是重复的。 我正在使用React + Redux作为一个简单的聊天应用程序。该应用程序由InputBar,MessageList和Container组件组成。容器(如您想象的那样)包装了其他两个组件,并连接到商店。我的消息状态以及当前消息(用户当前正在键入的消息)都保存在Redux存储中。简化结构: 更新当前消息时出现我遇到的问题。更新当前消息会触发一个
编辑:我已经用一个带有PropertyValueFactory的cellValueFactory创建了和TableView,但是当我更新表示TableView数据的ObservableList时,我的TableView将不会更新。我确信readNctsvorgaenge()创建的新列表已经更新,并且包含了附加项。这是用mvvmfx->moodel view viewmodel实现的 这是FXML文
问题内容: 我试图弄清楚如何在MySQL中优化一个非常慢的查询(我没有设计这个): 比较一下: 说明语句对我没有帮助: 好的,它仍然认为它需要大约400万个条目才能计数,但是我可以计算文件中的行数比这还要快!我不明白为什么MySQL要花这么长时间。 这是表的定义: 版: 有什么明显的我想念的东西吗?(是的,我已经尝试过“ SELECT COUNT(change_event_id)”,但是没有性能差