- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过构建一个简单的聊天应用程序来学习 React Native。我有两个屏幕包裹在 TabNavigator 中,其中第一个屏幕(屏幕 A)是聊天框,另一个屏幕(屏幕 B)显示在线用户列表。我正在使用 SocketIO 来获取这些用户。
问题是,如何从 ScreenA 到 ScreenB 访问“onlineUsers”状态,以便在收到“用户加入”事件时可以看到更新的在线用户列表?
屏幕 A:
export default class ScreenA extends Component {
constructor(props) {
super(props);
this.state = {
onlineUsers = [];
}
}
componentDidMount() {
// Update list of online users when new user joins chat
this.socket.on('user joins', (payload) => {
this.setState({
onlineUsers: payload.users
})
})
}
}
export default class ScreenB extends Component {
constructor(props) {
super(props);
// I want to get the onlineUsers from ScreenA
this.state = {
onlineUsers = [];
}
}
}
export const Chat = TabNavigator({
ChatBox: {
screen: ScreenA
},
OnlineUsers: {
screen: ScreenB
},
})
最佳答案
最好的方法是在父组件中处理事件,然后将其传递给它们的子组件。因此,在您的情况下,您的路由器中应该有一个在线用户列表。然后将数组传递给屏幕 B。这是你应该怎么做
路由器
state = {
online_users:[]
}
_update = (data) => {
this.setState({online_users:data});
};
export const Chat = TabNavigator({
ChatBox: {
screen: <ScreenA onUpdate={this._update}/>
},
OnlineUsers: {
screen: <ScreenB userList={this.state.online_users}>
},
})
export default class ScreenA extends Component {
constructor(props) {
super(props);
}
componentDidMount() {
// Update list of online users when new user joins chat
this.socket.on('user joins', (payload) => {
this.props.onUpdate(payload.users)
})
}
}
export default class ScreenB extends Component {
constructor(props) {
super(props);
}
// You can access online user using this.props.userList
}
关于react-native - react 导航 : Share state between two screens within TabNavigator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48313206/
我有这个组件,它包含一个由 TabNavigator 覆盖在底部的列表。任何想法如何解决它?只有一种造型方式吗? render() { return (
情况是,我有三个屏幕,显示从 API 获取的结果,并允许用户对这些结果分派(dispatch)操作。这些操作会触发(应该)导致其他两个屏幕。换句话说,如果用户在任何屏幕上并执行某些操作,其他两个屏幕应
页眉标题似乎无法按预期工作。 我已经将 react-native 和所有其他依赖项更新到最新版本,并查看了 react-navigation 文档。我还在 github 上为此项目创建了一个错误。 如
当我运行模拟器时... react-native run-ios ...我在终端中看到一条消息“TabNavigator 已弃用。请使用 createBottomTabNavigator...” 但是
我相对确定我发现这是不可能的,但我想确保没有办法。 有问题的应用程序从 AppNavigator StackNavigator 开始. export const AppNavigator = Stac
如何设置 TabNavigator 选项卡的高度和填充样式?我在做以下事情: import Icon from "react-native-vector-icons/MaterialIcons"; c
所以我正在使用React-native React-navigation,并且我试图将我的应用程序设置为具有一些流程。 这个想法是嵌套一个抽屉,我可以在选项卡导航器的标题中打开和关闭它。或者同时使用
我在 StackNavigator(祖级导航器)内的另一个 TabNavigator(父级导航器)中使用 TabNavigator(子级导航器)。 这是我的代码。 const SimpleAp
我正在尝试将 TabNavigator 中的选项卡设置为橙色。我尝试了多种不同的方法,但似乎都不起作用(即背景始终为标准灰色)。 @namespace mx "library://ns.adobe.
我假设之前有人问过这个问题,但我找不到它,所以请告诉我它是否与其他措辞或其他内容一起找到了重复项。 问题出在包含多个 CellTemplate 的 SL4 DataGrid,包括 Checkbox、B
我想隐藏 Header 和 TabNavigator 选项卡 onScroll。我怎么做?我想在滚动上隐藏它们并在 ScrollUp 上显示它们。我的代码: import React, { Compo
我在 tabnavigator 中有组件。在我的组件中,我有多行文本,所以当我在 InputText 键盘上输入多行时,我想使用 KeyboardAvoidingView 在键盘显示时推送屏幕。 这是
这是我的层次结构, -StackNavigator (root) -Portada -MainScreen (TabNavigator) -Home -
TabNavigator 有问题。选项卡的标签被截断,一旦用户将鼠标放在选项卡上,它就会再次重绘。有没有办法以编程方式重新绘制选项卡的标签? 最佳答案 您可能还想考虑 SuperTabNavigato
我用过 TabNavigation对于我的应用程序。在某些屏幕上,我希望它只显示在 portrait 上方向,其他是landscape .我找到了 react-native-orientation并在
我在我的 React Native 应用程序中使用选项卡导航器、堆栈导航器和开关导航器的组合 react-navigation 。 这很有效,但我想在每个屏幕中保留底部选项卡。目前,如果我导航到 Us
如何隐藏 TabNavigator 中的标签并仅显示图标?如果我执行以下操作: const Tabs = TabNavigator({ Home: { screen:MainHome,
这是我的项目文件层次结构 RootTabNavigator | AuthStackNavigator // I want to go back to this navigator
我使用 createMaterialTopTabNavigator 创建了一个自定义选项卡导航器,但在其中一个选项卡中我想创建一个 StackNavigator。这可能吗? 我发现了很多嵌套在 Sta
问题我使用 React Native 制作了一个非常基本的应用程序,现在我想要有多个选项卡。当我尝试添加提要和评论选项卡时,收到一条错误消息: Uncaught Error: Route 'Feed'
我是一名优秀的程序员,十分优秀!