javascript - React Native 渲染相同的路线

标签 javascript reactjs react-native

我想在 React Native 中按下按钮时更改路由。在我的 SplashContainer 组件中,这是我正在运行的方法:

handleToSignUp = () => {
    console.log("Running handleToSignUp")
    this.props.navigator.push({
        signUpForm: true
    });
}

我的导航器组件如下所示

export default class NimbusNavigator extends Component {
    static propTypes = {
        isAuthed: PropTypes.bool.isRequired
    }
    renderScene = (route, navigator) => {
        console.log(route);
        console.log(navigator);
        // Keeps track of whether user is Authed or not. 
        if (this.props.isAuthed === false && route !== 'signUpForm') {
            return <SplashContainer navigator={navigator}/>
        } else if (route === 'signUpForm') {
            return <SignUpForm navigator={navigator} />
        }

        return <FooterTabsContainer navigator={navigator} />
    }
    configureScene = (route) => {
        return Navigator.SceneConfigs.FloatFromRight
    }
    render () {
        return (
            <Navigator
                configureScene={this.configureScene}
                renderScene={this.renderScene}
            />
        )
    }
}

如果route不等于'signUpForm'不应将代码跳到 else if声明和渲染 <SignUpForm/>成分?

谢谢!

最佳答案

有几种方法可以实现此目的,但要记住的主要一点是传递给 navigator.push({//properties of the Route object }) 的所有内容都将成为路由的属性对象。

例如,如果您保持 handleSignUp 方法不变,则需要重写您的 renderScene 方法,如下所示:

renderScene = (route, navigator) => {
    if (this.props.isAuthed === false && !route.signUpForm) {
        return <SplashContainer navigator={navigator}/>
    } else if (route.signUpForm) {
        return <SignUpForm navigator={navigator} />
    }

    return <FooterTabsContainer navigator={navigator} />
}

您还可以像这样重写您的 handleSignUp 方法:

handleToSignUp = () => {
    this.props.navigator.push({
        title: 'handleSignUpForm'
    });
}

renderScene 像这样:

renderScene = (route, navigator) => {
    if (this.props.isAuthed === false && route.title !== 'signUpForm') {
        return <SplashContainer navigator={navigator}/>
    } else if (route.title === 'signUpForm') {
        return <SignUpForm navigator={navigator} />
    }

    return <FooterTabsContainer navigator={navigator} />
}

关于javascript - React Native 渲染相同的路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556898/

相关文章:

javascript - Web如何hook媒体请求并修改媒体请求响应?

twitter - 如何将 Twitter 小部件集成到 Reactjs 中?

javascript - SlateJS:slate-core 编辑器不更新模拟 onKeyDown 事件的值

react-native - react native : Propagate Pan Responder event from view to inner scroll view

ios - 人们如何使用 React Native 处理 iOS 中的 "recent app"箭头?

javascript - 在所有浏览器中传递来自 iFrame 的消息

javascript - 悬停时打开的 Bootstrap 下拉菜单

javascript - 图钉上的信息窗口未在谷歌地图上关闭

node.js - "npm start"显示 "Unhandled promise rejection"错误

javascript - React Navigation 从自定义标题中的按钮导航到新屏幕