- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个顶级 App.js
的 react-native 应用程序,即:
import { createStackNavigator } from 'react-navigation';
class App extends Component {
render() {
return <AppStack {..this.props} />
}
}
export withAuth(App)
其中高阶组件 withAuth
将 user
和 authenticating
属性添加到 App
:
const withAuth = (Component) =>
class WithAuth extends React.Component {
constructor(props) {
super(props)
this.state = {
authenticating: true,
user: false
}
}
componentDidMount() {
// authenticating logic ...
firebase.auth().onAuthStateChanged(user => {
if (user)
this.setState({
authenticating: false,
user: user
})
else
this.setState({
authenticating: false
})
})
}
render() {
return (<Component user={this.state.user} authenticating={this.state.authenticating} {...this.props} />)
}
}
AppStack
是:
const AppStack = createStackNavigator(
{ AppContainer, Profile },
{ initialRouteName : 'AppContainer' }
)
请注意,没有代码传递从 class App
向下传递到 AppContainer
和 Profile
的 props
>。
因此 AppContainer
中的 user
和 authenticating
Prop 是未定义的。
class AppContainer extends Component {
// this.props.user is false and this.props.authenticating is true
componentDidMount() {
console.log(`Debug Did mount with user: ${this.props.user}`, this.props.authenticating)
}
render() {
// if I `export withAuth(AppContainer)`, then this prints the user information. but not if I log inside `componentDidMount`
console.log(`Debug loaded with user: ${this.props.user}`, this.props.authenticating)
return <Text>'hello world'</Text>
}
}
export default AppContainer
我可以将 AppContainer
包装在 withAuth
中并执行 export default withAuth(AppContainer)
,但是 AppContainer
不能读取 componentDidMount
中的 this.props.user
属性,仅在 render() { ... }
中。
理想情况下,我想从 AppStack
传递 user
和 authenticating
属性,我该怎么做?
注意:目前我想尽可能不使用 redux
。这是一个简单的应用程序。
最佳答案
您可以通过 screenProps
将 Prop 从高阶组件传递到子屏幕。示例:
const withTest = Component => (
class WithTest extends React.Component {
render() {
return (<Component screenProps={{ user: "abc" }} />);
}
});
检查 Navigator Props了解更多详情。
关于javascript - React Native 通过 `props` 构建的导航容器传递 `createStackNavigator`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51467452/
我正在构建我的第一个练习应用程序,并尝试使用 createAppNavigator 在屏幕之间组合导航。 但是,一旦我尝试使用 createAppNavigator我收到以下错误。 . 相关代码: A
我在 react-native 项目中导入堆栈导航器时遇到问题。我正在使用 JSX 语法。我在下面发布了有关该项目的信息,我希望这些信息与找到此问题的解决方案有关。 以下代码执行导入。它位于一个名为
尝试了很多方法,都没有找到很好的嵌套createDrawerNavigator createBottomTabNavigator createStackNavigator的方案 现在 抽屉(creat
场景: 我有一个应用程序,可使用三个导航选项卡(学校、管理员、家庭); 我现在正在尝试添加其他屏幕,这些屏幕不会有相应的选项卡。这些屏幕将使用类似 this.props.navigation.navi
我想在 ReactNative 上创建一个简单的导航示例。 下面是一段代码; import React, { Component } from 'react'; import { Button, Vi
我正在使用 createStackNavigator内createBottomTabNavigator来自 react-navigation在我的应用程序中。我想在我的屏幕上有一个标题。关注 Reac
我当前的代码 App.js import React from 'react'; import AuthenticationNavigator from 'app/src/navigations/Au
我当前的代码 App.js import React from 'react'; import AuthenticationNavigator from 'app/src/navigations/Au
我在我的应用程序中使用React Navigation。我在标题中使用 createBottomTabNavigator 创建了 createStackNavigator 我试图访问我从屏幕传递的参数
在过去的几天里,我一直在为我的屏幕添加一个动画标题。我在这方面取得了成功,但是我现在想默认将其用作我的标题,而不是将代码复制并粘贴到我希望使用它的所有屏幕中。目前,动画标题在屏幕中实现如下: 要呈现标
我使用 React Navigation 作为我的应用程序的导航器组件。我想更改堆栈导航器的字体系列。目前我这样做是为了更改 iOS 中的字体系列,并且效果很好: const LoggedInStac
我在我的项目中使用了 react-navigation,并弹出此错误。 我用谷歌搜索了这个错误信息,没有找到结果。 (我还不能发图片) 错误信息如下: `createStackNavigator()`
我有一个顶级 App.js 的 react-native 应用程序,即: import { createStackNavigator } from 'react-navigation'; class
当我使用 createStackNavigator 直接指定 drawerLockMode 时,它不起作用。 const drawerStack = createStackNavigator({
我创建了以下代码以导入到 app.js 中 import React from "react"; import { View } from "react-native"; import { creat
请查看 expo snack . 我有一个用于登录和未登录状态的切换导航器。 当用户登录时,切换器加载 DrawerNavigator加载 Screen1并通过 contentComponent 加载
我知道以前有人问过这个问题,但只针对旧版本的 react-navigation。从那时起,一些事情发生了变化。 createBottomTabNavigator 可以更快地创建底部导航器,函数 jum
更新: Git Repo of NotWorkingProject 尝试使用 react-navigation 包在 React Native(Expo-Typescript) 与我们处理常规 Rea
我正在使用 React Native 和 TypeScript 编写应用程序,并使用 React Navigation 进行路由。 在我下载的示例项目中,他们使用 StackNavigator({..
我是一名优秀的程序员,十分优秀!