2016-03-21 31 views
7

Karmaşık mantık nedeniyle, this.props.navigator.push(), yavaş navigasyon geçişleri uygulamayı kullanılamaz hale getirdiğinde birçok bileşeni işlemek zorundayım. Ben here fark bu sorunu çözmek için InteractionManager.runAfterInteractions api sağlamak sonraInteractionManager.runAfterInteractions nasıl kullanılır? Navigator geçişlerini daha hızlı hale getirir

enter image description here

,

ben gezgini animasyon bittikten sonra geri çağırma uzun zaman tüketilen, ancak bileşenlerin çoğu nerede bilmiyorum getirmek gerek

gerektiği Ben,

belki basit bir örnek yeterlidir, zaman ayırdığınız için

sayesinde diyoruz.

cevap

12

bir performant Navigator sahne nasıl görünebileceğini tam bir örnek :

import {AfterInteractions} from 'react-native-interactions'; 

function MyScene() { 
    return (
    <AfterInteractions placeholder={<CheapPlaceholder/>}> 
     <ExpensiveComponent/> 
    </AfterInteractions> 
); 
} 
+0

cevabınız için teşekkürler :) –

0

JS iş parçacığını meşgul eden herhangi bir kodu InteractionManager'a, örn.

InteractionManager.runAfterInteractions(() => { 
    someLongTask() // or animations, or whatever 
}) 
0
import {InteractionManager} from "react-native"; 

componentDidMount() { 
    InteractionManager.runAfterInteractions(() => { 
     this.setState({renderPlaceholderOnly: false}); 
    }); 
    } 

Referans:

import {Component} from 'react'; 
import {InteractionManager, Text} from 'react-native'; 

class OptimizedScene extends Component { 

    state = {interactionsComplete: false}; 

    componentDidMount() { 
    InteractionManager.runAfterInteractions(() => { 
     this.setState({interactionsComplete: true}); 
    }); 
    } 

    render() { 
    if (!this.state.interactionsComplete) { 
     return <Text>loading...</Text>; 
    } 

    return (
     <ExpensiveComponent/> 
    ); 
    } 
} 

Bu a library içine ayıklanmış olan daha da kolaylaştırmak için: Burada https://facebook.github.io/react-native/docs/performance.html#slow-navigator-transitions

İlgili konular