NavigatorがシーンShiftEditの下に移動すると、トランジションアニメーション中に遅れが発生します。アニメーションはすぐに開始されますが、1ミリ秒間停止します。 InteractionManagerは、4つのピッカーコンポーネントのレンダリングを延期するために使用されます。すべてのピッカーコンポーネントには、配列から構築された項目のリストがあります。多くのアイテムがあります。ピッカーコンポーネントがShiftEditでまだレンダリングされていなくても、これが計算され、これが遅れの理由ですか?私を手伝ってくれますか?アニメーション中にネイティブAndroidラグに反応します
'use strict'
import React, {View, Text, StyleSheet, InteractionManager, TouchableOpacity} from 'react-native';
import { connect } from 'react-redux';
import Spinner from 'react-native-spinkit';
import StyleCommon from '../styles';
import TimePicker from '../components/time-picker';
import ColorPicker from '../components/color-picker';
import LabelPicker from '../components/label-picker';
class ShiftEdit extends React.Component {
constructor(props) {
super(props);
this.state = {
isReady: false,
shiftId: '',
startHour: '',
endHour: '',
color: '',
}
}
componentDidMount() {
InteractionManager.runAfterInteractions(() => {
this.setState({isReady: true});
});
}
onChangeItem = (label, val) => {
let data = {};
data[label] = val;
this.setState(data);
}
renderPlaceholder() {
return (
<View style={styles.container}>
<Text>Loading...</Text>
</View>
)
}
render() {
if (!this.state.isReady) {
return this.renderPlaceholder();
}
return (
<View style={{flex:1, flexDirection: 'column'}}>
<TimePicker label={'Start hour'} value={this.state.startHour} onChange={this.onChangeItem.bind(this, 'startHour')} />
<TimePicker label={'End hour'} value={this.state.endHour} onChange={this.onChangeItem.bind(this, 'endHour')} />
<ColorPicker label={'Color'} value={this.state.color} onChange={this.onChangeItem.bind(this, 'color')} />
<LabelPicker label={'Shift ID'} value={this.state.shiftId} onChange={this.onChangeItem.bind(this, 'shiftId')} />
</View>
)
}
};
私はそれはまだ同じクリスが示唆したように、アニメーションの登録をコントロールしようとしましたが、私が直接InteractionManagerとは経験をしたんよう
onPress =() => {
let handle = InteractionManager.createInteractionHandle();
this.props.navigator.push({component: 'shiftedit'});
InteractionManager.clearInteractionHandle(handle);
}
が、私はむしろInteractionManagerを使用したい、あなたはInteractionManager.runAfterInteractionsを使用して試すことができます各ピッカーコンポーネントのcomponentDidMount内にありますか?それが役に立ったら教えてください! – narayanan
こんにちは、私はすでにそれをチェックしましたが、それは同じ動作、私はRN 0.22を使用する可能性がありますこれは事実です。 –