首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在react-native-导航中使用react-native-tab-view

在react-native-导航中使用react-native-tab-view
EN

Stack Overflow用户
提问于 2020-05-05 18:43:58
回答 2查看 1.8K关注 0票数 1
代码语言:javascript
复制
react: "16.11.0",
react-native: "0.62.2",
react-native-navigation: "^6.4.0",
react-native-tab-view: "^2.14.0",

我正在尝试将react-native-tab-viewreact-native-navigation V3一起使用。

到目前为止,我可以这样使用已注册的组件:

代码语言:javascript
复制
import EventsScreen from './EventsScreen';
function registerScreens() 
{
    ...
    Navigation.registerComponent('com.events.EventsScreen', () => gestureHandlerRootHOC(EventsScreen));
    ...
}

在我想要显示选项卡视图的React.Component页面中:

代码语言:javascript
复制
import EventsScreen from './EventsScreen';

let renderScene = SceneMap({
    first: EventsScreen,
    second: AddEventScreen   });

上面的方法可以工作,但我不能向EventsScreen传递任何道具。我更可能期待的是这样的设计,

代码语言:javascript
复制
{
   component: 'com.events.EventsScreen',
   passProps: { .. }
}

如果我以这种方式尝试,则以下内容不起作用:

代码语言:javascript
复制
let renderScene = SceneMap({
        first: 'com.events.EventsScreen',
        second: 'com.events.AddEventScreen'   });

SceneMap提供带有道具的React.Component视图的正确方式是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-05-05 19:12:59

我可以这样将道具传递给renderScene属性:

代码语言:javascript
复制
renderScene = ({ route }) => {
      switch (route.key) {
        case 'first':
          return <EventsScreen {...this.props}/>;
        case 'second':
          return <SecondRoute />;
        default:
          return null;
      }
    };

    render()
    {
        return (
                <TabView
                    onIndexChange={this._handleIndexChange}
                    navigationState={this.state}
                    renderScene={this.renderScene}
                    initialLayout={initialLayout}
                    style={styles.container}
                />

        );
    }
票数 0
EN

Stack Overflow用户

发布于 2020-05-26 09:06:07

因此,您似乎正在尝试使用注册到RNN的屏幕作为react-native-tab-view中的tabs之一。

相反,你想做的是注册一个包含react-native-tab-view的组件/屏幕,并且有你想要用作tabs的组件/屏幕作为普通的react组件(不要向RNN注册这些组件)。

你将会得到类似这样的结果:

代码语言:javascript
复制
// index.js
import Home from './route/Home

Navigation.registerComponent('Home', () => Home)

// Home.js
import { TabView, SceneMap } from 'react-native-tab-view'
import EventScreen from './route/Home/tabs/EventScreen'

const renderScene = () => {
  return SceneMap({
    eventScreen: () => <EventScreen {...eventScreenProps} />
  })
}

return (
  <TabView
    renderScene={renderScene}
    {...others}
  />
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61611247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档