我有一个 react-native 应用程序,我使用 React-Native-Router-Flux 作为我的导航库,并且我在将 props 传递给子组件时遇到了问题。 在我的login.js
文件中,用户登录后,还会使用新的路由属性(登录用户名)调用新路由。这在使用堆栈视图时工作正常,但不适用于选项卡,而 props 值从未从其初始值更改。我在下面列出了我的路线和登录文件:
*未设置的道具名为身份验证
登录(为简洁起见而减少):
.then( (data) => {
Actions.tabbar({Auth: this.state.username})
})
路线:
render() {
return (
/* Start Router */
<routes.Router>
{/* Start Root Stack */}
<routes.Scene key="root" headerMode = "none" hideNavBar={true} tabBarPosition="bottom" >
{/* Home Route as a stack */}
<routes.Scene key="Home Test" title="Home">
<routes.Scene key="Home Test" component={Home} title="Home" />
</routes.Scene>
{/* Signup Screen as a Stack */}
<routes.Scene key="SignupScreen" title="Signup Screen">
<routes.Scene key="SignupScreen" component={SignupScreen} title="SignupScreen" />
</routes.Scene>
{/* Start Tabs view */}
<routes.Scene key="tabbar" tabs={true} Auth = {null} tabBarStyle={{ backgroundColor: '#FFFFFF' }} >
{/* Live Feed Tab View */}
<routes.Scene key = "live" title = "live">
<routes.Scene key="LiveFeed" component={LiveFeed} title="LiveFeed" userLoggedIn = {null} />
</routes.Scene>
{/* User Directory Tab View */}
<routes.Scene key = "User Directory" title = "User Directory">
<routes.Scene key="UserDirectory" component={UserDirectory} title="UserDirectory" />
</routes.Scene>
{/* Messages Tab View */}
<routes.Scene key = "Messages" title = "Messages">
<routes.Scene key="Messages" component={Messages} title="Messages" userLoggedIn = {this.props.Auth} />
<routes.Scene key="Message" component={Message} title="Message" userLoggedIn = {null} ThreadRequested = {null} />
</routes.Scene>
{/* End Tabs View */}
</routes.Scene>
{/* End Root Stack */}
</routes.Scene>
{/* End Router */}
</routes.Router>
错误是我传递了道具的默认值,该值在渲染时覆盖了它。要修复,只需删除值中的 prop 默认值,然后使用 Action 传递您的 prop。 ,因此我从场景中删除了 Auth
属性
溶液:
<routes.Scene key="tabbar" tabs={true} tabBarStyle={{ backgroundColor: '#FFFFFF' }} >