2016-03-21 16 views
7

Vì logic phức tạp, tôi phải hiển thị nhiều thành phần khi this.props.navigator.push(), chuyển tiếp điều hướng chậm làm cho ứng dụng không khả dụng.làm thế nào để sử dụng InteractionManager.runAfterInteractions làm cho chuyển tiếp navigator nhanh hơn

enter image description here

sau đó tôi nhận thấy here cung cấp InteractionManager.runAfterInteractions api để giải quyết vấn đề này,

Tôi cần mang hầu hết các thành phần trong đó tiêu thụ thời gian dài để gọi lại sau khi hoa tiêu hoạt hình xong, nhưng tôi không biết nơi nên Tôi gọi nó là,

có thể là một ví dụ đơn giản là đủ,

cảm ơn thời gian của bạn.

Trả lời

12

Dưới đây là một ví dụ đầy đủ về những gì một Navigator cảnh performant có thể trông giống như:

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/> 
    ); 
    } 
} 

này đã được chiết xuất thành a library để làm cho nó thậm chí còn dễ dàng hơn :

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

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

cảm ơn bạn đã trả lời :) –

0

Bạn nên chuyển bất kỳ mã nào đang giữ luồng JS bận đến Trình quản lý tương tác, ví dụ:

InteractionManager.runAfterInteractions(() => { 
    someLongTask() // or animations, or whatever 
}) 
Các vấn đề liên quan