React native React native-如何在React native中显示一次性启动视频?

React native React native-如何在React native中显示一次性启动视频?,react-native,splash-screen,hybrid,React Native,Splash Screen,Hybrid,我正在创建一个项目,其中我有一个一次性启动视频屏幕,用于显示应用程序的一些介绍视频。视频后,应用程序需要加载已创建的登录屏幕。对此没有问题,但不知道如何执行一次性启动屏幕 非常感谢你的帮助 谢谢我以前没有在React-Native中处理过视频,所以我不熟悉它处理视频的功能,但只需通过谷歌搜索React-Native视频就会返回带有ONED道具的。正如Anis D所说,这将取决于您的导航以及如何存储数据,但如果是我使用react navigation进行导航,我会在应用程序启动时提供一个组件,检查

我正在创建一个项目,其中我有一个一次性启动视频屏幕,用于显示应用程序的一些介绍视频。视频后,应用程序需要加载已创建的登录屏幕。对此没有问题,但不知道如何执行一次性启动屏幕

非常感谢你的帮助
谢谢

我以前没有在React-Native中处理过视频,所以我不熟悉它处理视频的功能,但只需通过谷歌搜索React-Native视频就会返回带有ONED道具的。正如Anis D所说,这将取决于您的导航以及如何存储数据,但如果是我使用react navigation进行导航,我会在应用程序启动时提供一个组件,检查他们是否观看了视频,如果没有,则返回组件以显示视频,否则返回主应用程序堆栈(如果是)。像下面这样

class App extends Component {
  render() {
     if (!this.props.hasViewedVideo) {
        return <MyVideoComponent/>
     }
     return <MainApplicationStack/>
  }
}
类应用程序扩展组件{
render(){
如果(!this.props.hasViewedVideo){
返回
}
返回
}
}
在渲染视频播放器的MyVideoComponent中,在ONED道具上,将hasViewedVideo变量设置为true。如果每次安装只需要显示一次视频,我建议查看redux和redux persist来存储这些数据。否则,如果每次启动应用程序时都需要显示视频,则可以在初始组件中使用状态,如下所示

class App extends Component {
  state = {
    hasViewedVideo: false
  }

  render() {
     if (!this.state.hasViewedVideo) {
        return <MyVideoComponent/>
     }
     return <MainApplicationStack/>
  }
}
类应用程序扩展组件{
状态={
hasViewedVideo:错误
}
render(){
如果(!this.state.hasViewedVideo){
返回
}
返回
}
}
使用异步存储时,可能会出现如下情况

class App extends Component {
  state = {
    hasViewedVideo: false 
  }

  componentDidMount = async () => {
    const hasViewedVideo = await AsyncStorage.getItem('hasViewedVideo')
    this.setState({ hasViewedVideo })
  }

  onVideoEnd = async () => {
    await AsyncStorage.setItem('hasViewedVideo', true)
    this.setState({ hasViewedVideo: true})
  }

  render() {
     if (!this.state.hasViewedVideo) {
        return <MyVideoComponent onVideoEnd={this.onVideoEnd}/>
     }
     return <MainApplicationStack/>
  }
}
类应用程序扩展组件{
状态={
hasViewedVideo:错误
}
componentDidMount=async()=>{
const hasViewedVideo=wait AsyncStorage.getItem('hasViewedVideo')
this.setState({hasViewedVideo})
}
onVideoEnd=async()=>{
等待AsyncStorage.setItem('hasViewedVideo',true)
this.setState({hasViewedVideo:true})
}
render(){
如果(!this.state.hasViewedVideo){
返回
}
返回
}
}

它将onVideoEnd道具传递到子MyVideoComponent组件中,并在视频播放器的onEnd道具中使用它。

我以前没有在React Native中处理过视频,因此我不熟悉它处理视频的功能,但仅通过谷歌搜索React Native视频就会返回具有onEnd道具的。正如Anis D所说,这将取决于您的导航以及如何存储数据,但如果是我使用react navigation进行导航,我会在应用程序启动时提供一个组件,检查他们是否观看了视频,如果没有,则返回组件以显示视频,否则返回主应用程序堆栈(如果是)。像下面这样

class App extends Component {
  render() {
     if (!this.props.hasViewedVideo) {
        return <MyVideoComponent/>
     }
     return <MainApplicationStack/>
  }
}
类应用程序扩展组件{
render(){
如果(!this.props.hasViewedVideo){
返回
}
返回
}
}
在渲染视频播放器的MyVideoComponent中,在ONED道具上,将hasViewedVideo变量设置为true。如果每次安装只需要显示一次视频,我建议查看redux和redux persist来存储这些数据。否则,如果每次启动应用程序时都需要显示视频,则可以在初始组件中使用状态,如下所示

class App extends Component {
  state = {
    hasViewedVideo: false
  }

  render() {
     if (!this.state.hasViewedVideo) {
        return <MyVideoComponent/>
     }
     return <MainApplicationStack/>
  }
}
类应用程序扩展组件{
状态={
hasViewedVideo:错误
}
render(){
如果(!this.state.hasViewedVideo){
返回
}
返回
}
}
使用异步存储时,可能会出现如下情况

class App extends Component {
  state = {
    hasViewedVideo: false 
  }

  componentDidMount = async () => {
    const hasViewedVideo = await AsyncStorage.getItem('hasViewedVideo')
    this.setState({ hasViewedVideo })
  }

  onVideoEnd = async () => {
    await AsyncStorage.setItem('hasViewedVideo', true)
    this.setState({ hasViewedVideo: true})
  }

  render() {
     if (!this.state.hasViewedVideo) {
        return <MyVideoComponent onVideoEnd={this.onVideoEnd}/>
     }
     return <MainApplicationStack/>
  }
}
类应用程序扩展组件{
状态={
hasViewedVideo:错误
}
componentDidMount=async()=>{
const hasViewedVideo=wait AsyncStorage.getItem('hasViewedVideo')
this.setState({hasViewedVideo})
}
onVideoEnd=async()=>{
等待AsyncStorage.setItem('hasViewedVideo',true)
this.setState({hasViewedVideo:true})
}
render(){
如果(!this.state.hasViewedVideo){
返回
}
返回
}
}

它将onVideoEnd道具传递到子MyVideoComponent组件中,并在视频播放器的onEnd道具中使用它。

您可以发布您尝试的内容吗?这取决于您的导航方式。例如,使用flux navigation,您可以使用NavigationActions.login()设置应用程序属性,该属性将在应用程序卸载时删除。谢谢您的回复,我尝试了本教程,但它不起作用。您可以发布您尝试过的内容吗?这取决于您的导航方式。例如,使用flux navigation,您可以使用NavigationActions.login()设置应用程序属性,该属性将在应用程序卸载时删除,感谢您的回复,我尝试了本教程,但它不起作用。brother是否有任何想法如何使用AsyncStorage进行此操作?添加了一个示例,说明如何使用AsyncStorage进行此操作brother是否有任何想法?添加了一个示例,说明如何使用AsyncStorage进行此操作