reactjs - 使用 StackNavigator 将 Native 从子组件反应到父组件
问题描述
如何从子组件导航到父组件?
YoutubeVideo.js
<YouTube
videoId={this.state.VideoId}
play={false}
loop={false}
apiKey={apikey}
onReady={e => this.setState({ isReady: true })}
onChangeState={e => this.setState({ status: e.state })}
onChangeQuality={e => this.setState({ quality: e.quality })}
onError={e => this.setState({ error: e.error })}
style={{ alignSelf: 'stretch', height: 250 }}
/>
<Related videoId={this.state.VideoId} />
</View>
相关组件.js
<View>
<ScrollView>
<RkCard rkType='shadowed' >
{this.state.data.map((item, i) =>
<TouchableHighlight
key={item.id.videoId}
onPress={() => props.navigate('YoutubeVideo', {youtubeId:item.id.videoId})}>
<View rkCardContent>
<Image rkCardImg
source={{uri: item.snippet.thumbnails.medium.url}}
style={styles.image}/>
<View style={styles.vidItems}>
<Text style={styles.vidText}>{item.snippet.title}</Text>
<Icon name='more-vert' size={20} color='#555'/>
</View>
</View>
</TouchableHighlight>
)}
</RkCard>
</ScrollView>
</View>
我想从相关视频发送新的 Youtube ID,但在同一页面。
解决方案
您无需再次导航到 YoutubeVideo。您可以通过回调将 videoID 传递给父级,如下所示:
相关组件.js
...
<TouchableHighlight
onPress={() => {this.props.onVideoClick(item.id.videoId)} }
>
...
YoutubeVideo.js
...
<Related
videoId={this.state.VideoId}
onVideoClick={(videoID) => { this.setState({ VideoId: 'videoID' }) }}
/>
...
您可以通过这种方式将数据发送给父级。我希望这能帮到您
推荐阅读
- c++ - 什么时候应该在头文件中声明一个变量?
- c# - 从 Unity 中的 json 文件访问数组变量
- entity-framework-core - 如何在 DbContext 中包含新类型并为其创建表?
- python - 使用 Python 从其他帐户下载 Outlook 电子邮件
- python - 使用flask和jquery使用来自MongoDB的数据使用chartjs绘制图表时出现问题
- security - PowerApps 是否允许未跟踪的电子邮件或创建安全漏洞?
- java - Slack App Slash 命令 - 检测到无效签名(401 未经授权)
- robotframework - 如何设置关键字的状态?
- reactjs - 编译反应应用程序时出错 - 错误:*path* 的包导出未定义有效的“。” 目标
- python - Pandas 正则表达式 - 条件匹配