简体   繁体   English

使用 require() 加载功能组件

[英]Using require() to load functional component

My app takes a lot of time(15 secs 2GB RAM/10 secs 3GB RAM/ 5 secs 4GB RAM) for cold startup and I am trying to reduce this time.我的应用程序需要很长时间(15 秒 2GB RAM/10 秒 3GB RAM/5 秒 4GB RAM)进行冷启动,我正在努力减少这个时间。 Inspired by Inline Requires and this I am trying to load some functional components on-demand.受到Inline Requires 启发,我正在尝试按需加载一些功能组件。 So I am doing this as -所以我这样做 -

DatePicker.tsx日期选择器.tsx

import React from 'react';
import DateTimePicker, { DateTimePickerProps } from 'react-native-modal-datetime-picker';

...

export const DatePicker: React.FC<DatePickerProps> = (props) => {

return (
  <DateTimePicker
   date={props.date}
   isVisible={props.isDateTimePickerVisible}
   ...
  />
);

}; };

AddRecord.tsx添加记录.tsx

 //Intentionally commented import 
 //import { DatePicker } from '@aph/mobile-patients/src/components/ui/DatePicker';
 
 ...

 let DatePicker: any = null;

 export const AddRecord: React.FC<AddRecordProps> = (props) => {
    const [isDateTimePickerVisible, setIsDateTimePickerVisible] = useState<boolean>(false);

    return(
      <View>
        <Text  onPress={() => {
            setIsDateTimePickerVisible(true);

            if (DatePicker == null) {
              DatePicker = require('@aph/mobile-patients/src/components/ui/DatePicker');
            }

            Alert.alert('Clicked');

            console.log('check DatePicker ', DatePicker);
          }}> Click Me </Text>

          {isDateTimePickerVisible ? (
            <DatePicker
               isDateTimePickerVisible={isDateTimePickerVisible}
                ...
             />
          ) : null}
      </View>
    );
 }

But simulator is reporting an error但是模拟器报错在此处输入图像描述

Logging DatePicker object -记录 DatePicker object -

在此处输入图像描述

setIsDateTimePickerVisible is setting true before DatePicker has been loaded. setIsDateTimePickerVisible在 DatePicker 加载之前设置为 true。

I am not sure but I guess it might be:我不确定,但我想可能是:

<Text  onPress={() => {
            if (DatePicker == null) {
              DatePicker = require('@aph/mobile-patients/src/components/ui/DatePicker');
            }

            Alert.alert('Clicked');
 
            console.log('check DatePicker ', DatePicker);
            setIsDateTimePickerVisible(true); // <- update the state after


          }}> Click Me </Text>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM