试图在React Native中推送StackScreen。

问题描述 投票:0回答:1

每当我通过点击消息来激活onPress方法时,MessageScreen组件就会重新渲染而不是显示ChatScreen。即使我将ChatScreen替换为其他屏幕,也会发生这种情况。非常感谢任何关于这个问题的帮助。

App.js

<NavigationContainer ref={containerRef} initialState={initialNavigationState}>
      <Drawer.Navigator>
            <Drawer.Screen name="Feed" component={BottomTabNavigator} options={{swipeEnabled: false}} />
            <Drawer.Screen name="Settings" component={SettingsStack} options={{swipeEnabled: false}} />
      </Drawer.Navigator>
</NavigationContainer>

BottomTabNavigator

const BottomTab = createBottomTabNavigator();
export default function BottomTabNavigator({ navigation, route }) {

{...HomeStack Code}

{...ProfileStack Code}

const MyMessagesStack = createStackNavigator();
function MessagesStack() {
  return (
    <MyMessagesStack.Navigator initialRouteName={"Messages"} 
    screenOptions={{headerShown: false}}>
      <MyMessagesStack.Screen name="Messages" component={MessagesScreen} />
      <MyMessagesStack.Screen name="Chats" component={ChatScreen} />
    </MyMessagesStack.Navigator>
    );
}

return (
    <BottomTab.Navigator initialRouteName={INITIAL_ROUTE_NAME} >
      <BottomTab.Screen
        name="Home"
        component={HomeStack}
        options={{title: 'Feed'}}
      />
      <BottomTab.Screen
        name="Messages"
        component={MessagesStack}
        options={{title: 'Messages'}}
      />
      <BottomTab.Screen
        name="Profile"
        component={ProfileStack}
        options={{title: 'Profile'}}
      />
    </BottomTab.Navigator>
  );
}

消息屏(MessageScreen.js)

//flatscreen to render message components
</View>
        <FlatList
        data={Data}
        keyExtractor={(item, index) => index.toString()}
        renderItem={({ item }) => (
          <TouchableOpacity onPress={() => props.navigation.navigate('Chats')} >
            <Message
              image={item.image}
              name={item.name}
              lastMessage={item.message}
              timeStamp={item.timestamp}
              opened
            />
          </TouchableOpacity>
        )}
      />
javascript ios reactjs react-native react-navigation
1个回答
1
投票

你的组件重装的原因是由于有一些组件定义在其他组件中。

function BottomTabNavigator() {

  // Here
  function MessagesStack() {
    // ...
  }

  // ...
}

你需要在外部定义它们来避免这种情况。

function MessagesStack() {
  // ...
}

function BottomTabNavigator() {
  // ...
}
© www.soinside.com 2019 - 2024. All rights reserved.