Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 抽屉';抽屉打开/关闭时,s屏幕组件正在重新渲染_Reactjs_React Native_React Navigation_React Navigation V5_React Navigation Drawer - Fatal编程技术网

Reactjs 抽屉';抽屉打开/关闭时,s屏幕组件正在重新渲染

Reactjs 抽屉';抽屉打开/关闭时,s屏幕组件正在重新渲染,reactjs,react-native,react-navigation,react-navigation-v5,react-navigation-drawer,Reactjs,React Native,React Navigation,React Navigation V5,React Navigation Drawer,我有一个带有多个屏幕的主堆栈导航器,其中一个屏幕是带有动态创建屏幕的嵌套抽屉导航器 <Provider store={store}> <NavigationContainer onStateChange={onStateChange}> <Stack.Navigator initialRouteName="Launch"> <Stack.S

我有一个带有多个屏幕的主堆栈导航器,其中一个屏幕是带有动态创建屏幕的嵌套抽屉导航器

<Provider store={store}>
            <NavigationContainer onStateChange={onStateChange}>
                <Stack.Navigator initialRouteName="Launch">
                    <Stack.Screen name="Launch" component={Launch} />
                    <Stack.Screen name="Login" component={Login} />
                    <Stack.Screen name="Home" component={Home} />
                    <Stack.Screen name="ChatBox" component={ChatBox} /> /* <- Here is the drawer navigator screen */
                </Stack.Navigator>
            </NavigationContainer>
</Provider>

/*  {
const chatName=userChannels[index].friendlyName;
const screen=React.memo(()=>(
{
电流通道&&
(等待currentChannel.typing());
}}
enterChannel={()=>
enterChannel(channel.uniqueName)
}
/>
));
返回(
);
})}
标题组件是:

export default (props) => {
    const { text } = props;
    const navigation = useNavigation();

    const logout = async () => {
        try {
            await AsyncStorage.removeItem('accessToken');
            await AsyncStorage.removeItem('refreshToken');
        } catch (e) {
            // 
        }

        navigation.navigate('Login');
    };

    return (
        <View style={styles.header}>
            <TouchableOpacity
                onPress={() => navigation.dispatch(DrawerActions.openDrawer())}>
                <Icon name="menu" color="#FFF" size={18} />
            </TouchableOpacity>
            {text && <Text style={styles.headerText}>{text}</Text>}
            <Text style={styles.headerText} onPress={logout}>
                Logout
            </Text>
        </View>
    );
};
const ChatComponent = React.memo((props) => {
    const {
        channel,
        loadEarlier,
        isLoadingEarlier,
        onLoadEarlier,
        savedMessages,
        onSend,
        isTyping,
        user,
        onInputTextChanged,
        enterChannel,
    } = props;
        
    useEffect(() => {
        console.log('render ChatComponent');                        
        enterChannel();
        
    }, []);

    return (
        <GiftedChat
            inverted={false}
            loadEarlier={loadEarlier}
            isLoadingEarlier={isLoadingEarlier}
            onLoadEarlier={onLoadEarlier}
            messages={savedMessages}
            onSend={onSend}
            user={user}
            onInputTextChanged={onInputTextChanged}
            isTyping={isTyping}
            renderBubble={renderBubble}
            renderTime={renderTime}
            renderInputToolbar={renderInputToolbar}            
        />
    );
});
导出默认值(道具)=>{
const{text}=props;
const navigation=useNavigation();
const logout=async()=>{
试一试{
等待AsyncStorage.removeItem('accessToken');
等待AsyncStorage.removeItem('refreshToken');
}捕获(e){
// 
}
导航。导航('Login');
};
返回(
navigation.dispatch(DrawerActions.openDrawer())}>
{text&&{text}
注销
);
};
聊天组件是:

export default (props) => {
    const { text } = props;
    const navigation = useNavigation();

    const logout = async () => {
        try {
            await AsyncStorage.removeItem('accessToken');
            await AsyncStorage.removeItem('refreshToken');
        } catch (e) {
            // 
        }

        navigation.navigate('Login');
    };

    return (
        <View style={styles.header}>
            <TouchableOpacity
                onPress={() => navigation.dispatch(DrawerActions.openDrawer())}>
                <Icon name="menu" color="#FFF" size={18} />
            </TouchableOpacity>
            {text && <Text style={styles.headerText}>{text}</Text>}
            <Text style={styles.headerText} onPress={logout}>
                Logout
            </Text>
        </View>
    );
};
const ChatComponent = React.memo((props) => {
    const {
        channel,
        loadEarlier,
        isLoadingEarlier,
        onLoadEarlier,
        savedMessages,
        onSend,
        isTyping,
        user,
        onInputTextChanged,
        enterChannel,
    } = props;
        
    useEffect(() => {
        console.log('render ChatComponent');                        
        enterChannel();
        
    }, []);

    return (
        <GiftedChat
            inverted={false}
            loadEarlier={loadEarlier}
            isLoadingEarlier={isLoadingEarlier}
            onLoadEarlier={onLoadEarlier}
            messages={savedMessages}
            onSend={onSend}
            user={user}
            onInputTextChanged={onInputTextChanged}
            isTyping={isTyping}
            renderBubble={renderBubble}
            renderTime={renderTime}
            renderInputToolbar={renderInputToolbar}            
        />
    );
});
const ChatComponent=React.memo((道具)=>{
常数{
频道
早些时候,
提前加载,
在早些时候,
savedMessages,
总之,
isTyping,
用户,
OnInputExtChanged,
进入频道,
}=道具;
useffect(()=>{
log('render ChatComponent');
进入通道();
}, []);
返回(
);
});
这是

如何避免不必要的组件渲染