当前位置: 首页 > 面试题库 >

使用React-Native中的Navigator组件进行自定义导航

何建中
2023-03-14
问题内容

我正在开发React应用程序时探索React
Native的
可能性,并借助Navigatorcomponent在视图之间进行自定义导航。

主应用程序类呈现导航器,并在内部renderScene返回传递的组件:

class App extends React.Component {
    render() {
        return (
            <Navigator
                initialRoute={{name: 'WelcomeView', component: WelcomeView}}
                configureScene={() => {
                    return Navigator.SceneConfigs.FloatFromRight;
                }}
                renderScene={(route, navigator) => {
                    // count the number of func calls
                    console.log(route, navigator);

                    if (route.component) {
                        return React.createElement(route.component, { navigator });
                    }
                }}
             />
        );
    }
}

目前,该应用包含两个视图:

class FeedView extends React.Component {
    render() {
        return (
            <View style={styles.container}>
                <Text>
                    Feed View!
                </Text>
            </View>
        );
    }
}

class WelcomeView extends React.Component {
    onPressFeed() {
        this.props.navigator.push({
            name: 'FeedView',
            component: FeedView
        });
    }

    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.welcome}>
                    Welcome View!
                </Text>

                <Text onPress={this.onPressFeed.bind(this)}>
                    Go to feed!
                </Text>
            </View>
        );
    }
}

我想找出的是:

  • 我在日志中看到,renderScene虽然视图正确呈现一次,但按“转到菜单”时会多次调用。动画是如何工作的?
        index.ios.js:57 Object {name: 'WelcomeView', component: function}
    index.ios.js:57 Object {name: 'FeedView', component: function}
    // renders Feed View
  • 通常,我的方法符合React方法,还是可以做得更好?

我要实现的功能类似于NavigatorIOS但没有导航栏(但是某些视图将具有自己的自定义导航栏)。


问题答案:

您的方法应该很好用。在Fb的大型应用程序中,我们避免在require()渲染之前为场景组件调用,这可以节省一些启动时间。

renderScene首次将场景推送到导航器时应调用该函数。当导航器重新渲染时,也将为活动场景调用该视图。如果您renderScene在之后看到多次被调用push,则可能是一个错误。

导航器仍在开发中,但是如果发现任何问题,请在github上归档并标记我!(@ericvicenti)



 类似资料:
  • 本项目用来整合ReactNative和ReactRouter两个组件。React Native中提供了页面栈管理和导航的组件Navigator,为页面的生命周期管理和页面导航跳转提供了动画容器的支持。React Router提供了为React项目的路由导航支持。通过使用React Native Navigator Router可以将两个组件整合起来,在React Native项目中实现根据URL进

  • 我试图在Android上的React原生应用程序中定义一个自定义事件。我有原生视图,它有一个原生按钮。当按下按钮时,我想向我的React原生组件发送一条消息,以显示一个模式屏幕。 我遵循了示例,但不理解所有元素,在尝试中做了一些猜测。 在我的ViewManager类中: 自定义视图: 所以我希望,每次调用时,触发JS事件,我可以在React Native应用程序中显示模态视图。 在我的React组

  • 我刚刚用打字稿开始了一个新的反应项目,在功能组件中定义自定义道具时遇到了困难。 我查找了如何定义自定义道具,并找到了一种定义接口的方法,该接口详细描述了我传递给函数的道具类型,但是当我试图在我的主应用程序上运行它时,我得到一个错误消息 类型“{ digit: number; }”不能分配给类型“IntrinsicAttributes”。属性“数字”在类型“内部属性”上不存在。TS2322 我的代码

  • 本文向大家介绍vue在自定义组件中使用v-model进行数据绑定的方法,包括了vue在自定义组件中使用v-model进行数据绑定的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了vue v-model进行数据绑定,分享给大家,具体如下 官方例子https://vuefe.cn/v2/api/#model 有这么一句话: 默认情况下,一个组件上的 v-model 会把 value 用作 pr

  • 本文向大家介绍React Native react-navigation 导航使用详解,包括了React Native react-navigation 导航使用详解的使用技巧和注意事项,需要的朋友参考一下 一、开源库介绍 今年1月份,新开源的react-natvigation库备受瞩目。在短短不到3个月的时间,github上星数已达4000+。Fb推荐使用库,并且在React Native当前最

  • 问题内容: 我对Maven不太熟悉,我昨天才开始使用它,但是我喜欢它。在我的项目中,我使用 Log4j2 库进行日志记录,并且由于高级插件(如追加程序,转换器)的不足, 我需要使用自定义插件 。和(还有许多其他库)作为依赖项添加到与我的项目关联的 pom.xml 中。实际上,我正在使用Log4j的2.0版。 Log4j使用注释处理来预加载标记为的类。据我所知,在较旧的log4j版本中,必须在 po