cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Mengapa halaman tidak dimuat semula apabila keadaan berubah dalam kes ini?

Mari kita bercakap tentang latar belakang dahulu: Terdapat senarai rata yang besar pada halaman, dengan 3 item di dalamnya. Saya mempunyai senarai rata di bahagian bawah item ketiga, yang juga merupakan bahagian bawah senarai rata luar ini keadaan. Data memerlukan fungsi pemuatan tarik naik, kerana senarai rata dalaman tidak boleh mendapatkan acara tarik turun, jadi saya menulis kaedah pemuatan tarik naik di lapisan paling luar, dapatkan data dan masukkannya ke dalam keadaan, dengan itu menukar data di dalam. Walau bagaimanapun, walaupun keadaan telah berubah, halaman itu tidak dimuat semula.
Cetak di latar belakang untuk mengesahkan bahawa keadaan telah berubah

Kod ringkas terakhir

 constructor(props) {
        super(props)
        this.state = {
            data: [{"key": 1}, {"key": 2}, {"key": 3}],
        }

        this._changeData = this._changeData.bind(this);
    }

    _changeData(){
        this.setState({
            data :[{"key": 1}, {"key": 2}, {"key": 3},{"key": 4},{"key": 5}],
        })
    }

    _renderItem = ({item}) => {
        switch (item.key) {
            case 1:
                return (
                    <View>
                        <Text style={{height: 200}}>1111</Text>
                    </View>
                );
            case 2:
                return (
                    <View>
                        <Text style={{height: 200}}>ke2222y2</Text>
                    </View>
                );
            case 3:
                return (
                    //这个flatlist需要做上拉加载
                    <FlatList
                        data={this.state.data}
                     
                        renderItem={({item}) => <View style={{height: 200}}><Text>{item.key}</Text></View>}
                    />
                )
        }

    }

    render() {
        const {navigate} = this.props.navigation;
        let user = {'name': 'zy', age: 18}
        return (
            <View>
                <Text onPress={() => navigate('Two', {user: user})}>Home</Text>
                <FlatList
                    data={[{"key": 1}, {"key": 2}, {"key": 3}]}
                    renderItem={this._renderItem}
                    onEndReached={this._changeData}
                    onEndReachedThreshold={0.3}
                />
                <Text onPress={() => navigate('Two', {user: user})}>Home</Text>
            </View>
        )
    }

Demo yang saya tulis boleh dicapai
Tetapi pada siang hari dalam projek, data adalah tatasusunan yang diperoleh daripada rangkaian
Saya menggunakan tatasusunan baharu a untuk meletakkan tatasusunan dalam keadaan, dan kemudian tambah tatasusunan yang diperolehi , dan akhirnya tetapkan tatasusunan ini a untuk menyatakan
Tetapi saya mendapati tiada perubahan dan halaman itu tidak dimuat semula

曾经蜡笔没有小新曾经蜡笔没有小新2753 hari yang lalu661

membalas semua(2)saya akan balas

  • 大家讲道理

    大家讲道理2017-06-06 09:54:50

    By the way, adakah cara yang lebih baik

    balas
    0
  • 漂亮男人

    漂亮男人2017-06-06 09:54:50

    Anda hanya boleh mencetuskan pemaparan melalui setState.

    this.setState({
        data: anotherData
    })

    Tidak boleh dicetuskan oleh tugasan langsung

    this.state.data = anotherData

    Walaupun saya tidak tahu bagaimana anda sebenarnya melaksanakannya, saya rasa anda menggunakan kaedah yang kedua.

    balas
    0
  • Batalbalas