Ketika pengguna mengklik tombol gambar panah kembali, indikator bilah kemajuan tidak berkurang dalam reaksi asli

Saya ingin mencapai fungsi ini Ketika pengguna mengklik tombol gambar panah kembali, indikator bilah kemajuan akan berkurang dan itu akan menampilkan pertanyaan sebelumnya di carousel.

Saya menggunakan 'react-native-snap-carousel' untuk menampilkan data tanya jawab dan 'react-native-progress-bar-animated' untuk menampilkan indikator bilah kemajuan di react-native.

Tolong bantu saya bagaimana saya dapat mencapai fungsi ini. Saya baru di react-native. Terima kasih sebelumnya. masukkan deskripsi gambar di sini

Berikut beberapa kode agar mudah dipahami

 onSnapToItem = (index) => {
            console.log("get indexvalue", index);

            if (index > 0) {

                let progress = this.state.progress + 100 / this.state.questionList.length
                console.log("my progress qsn length", progress, this.state.questionList.length)
                this.setState({ indexvalue: index, progress: progress }, () => {
                    console.log("check progresss index", this.state.progress, index);
                })
            }

        }

        increase = (value) => {
            this.setState({
                [value]: this.state[value] + value,
            });
             this.carousel._snapToItem(this.state.indexvalue + 1)

        }
        decrease = (value) => {
            this.setState({
                [value]: this.state[value] + value,
            });
            this.carousel._snapToItem(this.state.indexvalue - 1)

        }


     <View style={styles.container}>
                    <View style={styles.topView}>
                        <TouchableOpacity onPress={() => { this.decrease(this.state.progress) }}>
                            <Image source={require('./../../Images/left-arrow-red.png')} style={styles.topImage} />
                        </TouchableOpacity>
                        <TouchableHighlight style={{ marginTop: hp('1.5%') }}>
                            <ProgressBarAnimated
                                width={wp('70%')}
                                value={this.state.progress}
                                // maxValue={100}
                                onComplete={() => {
                                    this.props.navigation.navigate('EditprofileScreen')
                                }}
                                height={hp('0.6%')}

                            />
                        </TouchableHighlight>

                        <TouchableOpacity onPress={() => { this.props.navigation.goBack() }}>
                            <Image source={require('./../../Images/closescreen.png')} style={styles.topImage1} />
                        </TouchableOpacity>
                    </View>

                    <Carousel
                        data={questionList}
                        renderItem={this.renderItemQuestion}
                        itemWidth={wp('100%')}
                        sliderWidth={wp('100%')}
                        ref={ref => this.carousel = ref}
                        scrollEnabled={false}
                        onSnapToItem={this.onSnapToItem}
                        extraData={this.state.indexvalue}

                    />

                    <TouchableOpacity onPress={() => this.increase(this.state.progress)}><Text style={styles.skiptext}>Skip</Text></TouchableOpacity>
                </View>

person Raghu singh    schedule 29.04.2020    source sumber


Jawaban (1)


Saya telah mengubah onSnapToItem, sedikit menambah dan mengurangi fungsi,

onSnapToItem = (index) => {
    let progress = (index === (this.state.questionList.length-1)) ? 100 : ((index+1) * (100/this.state.questionList.length));
    this.setState({ indexvalue: index, progress: progress }, () => {
        console.log("check progresss index", this.state.progress, index);
    })
}

increase = () => {
    this.carousel.snapToItem(this.state.indexvalue + 1)
}
decrease = () => {
    this.carousel.snapToItem(this.state.indexvalue - 1)
}

Dan tambahkan nilai maksimal ke animasi bilah Kemajuan Anda

<ProgressBarAnimated
    width={wp('70%')}
    value={this.state.progress}
    maxValue={100}
    onComplete={() => {
        this.props.navigation.navigate('EditprofileScreen')
    }}
    height={hp('0.6%')}
/>

Ini seharusnya berhasil.

person Neetin Solanki    schedule 29.04.2020
comment
Terima kasih @Neetin Solanki - person Raghu singh; 29.04.2020