gpt4 book ai didi

javascript - React Native Navigator renderView 返回条件不合逻辑

转载 作者:太空狗 更新时间:2023-10-29 14:53:03 25 4
gpt4 key购买 nike

我正在 Android 中创建一个 React Native 应用。

我的 renderView 方法有一个条件,但逻辑似乎没有意义。下面的代码是我的 render 和 renderView 方法。我不明白的是下面的 renderView 方法:

renderView: function(route, navigator) {
if (route.id === 'VaquinhaView') {
return (
<VaquinhaView openDrawer={this.openDrawer} navigator={navigator} />;
)
} else if (route.id === 'HomeView') {
return (
<HomeView openDrawer={this.openDrawer} />
);
}
},

render: function() {

var _renderView = this.renderView;
var _changeView = this.changeView;

return (
<DrawerLayoutAndroid
drawerWidth={deviceWidth - 50}
ref={'SIDE_MENU'}
drawerPosition={DrawerLayoutAndroid.positions.Left}
renderNavigationView={() => <NavigationView changeView={_changeView} />}>

<Navigator
ref={'NAV'}
initialRoute={{
id: 'HomeView',
component: HomeView
}}
configureScene={() => Navigator.SceneConfigs.FloatFromRight}
renderScene={(route, navigator) => _renderView(route, navigator)}>
</Navigator>
</DrawerLayoutAndroid>
);
}

如果我将 route.id 作为“VaquinhaView”传递,它会返回 HomeView 组件。我从未见过这样的有条件的行为。如果我跨过一行,它会跳到下面。屏幕截图:

enter image description here

enter image description here

我知道它不是递归调用方法(我已经检查过了),我试过用纯 JS 而不是 JSX 来编写它。

编辑:我也尝试更改语法,但仍然失败: enter image description here

编辑 2(根据要求):

changeView: function(route) {


this.renderView(route, this.refs['NAV']);
this.closeDrawer();
},

调用者:

_this.props.changeView({id: rowData.view}); 

(rowData.view是一个字符串名称的 View )

最佳答案

所以,

事实证明,我不认为我打算直接调用 renderView(),而是让 Navigator 这样做。这解决了主要问题。

此时值得记住的是,被解释的JS首先被转换,所以事件虽然看起来条件满足了,但它仍然在'else' block 中,你可能没有看代码正在被解释。

关于javascript - React Native Navigator renderView 返回条件不合逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33892924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com