React-native-router-flux: Tindakan. penyegaran tidak berfungsi

Dibuat pada 18 Okt 2017  ·  24Komentar  ·  Sumber: aksonov/react-native-router-flux

Versi: kapan

Beri tahu kami versi mana yang Anda gunakan:

  • reaksi-asli-router-flux v4.0.0-beta.12
  • reaksi asli v0.46.4

Perilaku yang diharapkan

Actions.refresh() menyegarkan adegan saat ini.
Jika pendekatan saya salah, atau Actions.refresh memiliki beberapa persyaratan, berikan saya informasinya

Perilaku sebenarnya

const ConnectRouter = connect()(Router);

const Routes = () => (
  <ConnectRouter>
    <Scene key="root">
      <Scene key="launchScreen" component={LoadingFull} hideNavBar />
      <Scene key="login" component={LoginForm} hideNavBar type={ActionConst.RESET} />
      <Scene key="lostPassword" component={LostPasswordForm} hideNavBar />
      <Scene key="dashboard" component={Dashboard} hideNavBar type={ActionConst.RESET} />
      <Scene key="search" component={SearchResult} hideNavBar />
    </Scene>
  </ConnectRouter>
);

Ketika saya berada di adegan pencarian (komponen biasa dengan status), saya mencoba untuk menyegarkan adegan dengan menggunakan Actions.refresh. Tapi entah kenapa itu tidak berhasil sama sekali.

Langkah-langkah untuk mereproduksi

  1. Menggunakan daftar adegan yang disediakan, buka Komponen pencarian (itu hanya komponen biasa dengan status)
  2. memicu tindakan. menyegarkan dengan menekan tombol/ memicu beberapa acara
needs response from author

Komentar yang paling membantu

@jaysassyinfotech
Actions.refresh({ kunci: Actions.currentScene }); tidak bekerja kedua kalinya
Ini berfungsi jika Anda melakukan seperti ini :)
Actions.refresh({key: Math.random()})

Semua 24 komentar

+1
saya ingin menggunakan renderBackButton dari adegan. kode contoh saya,

public componentWillMount (): void {
               Actions.refresh({
            renderBackButton: this.renderBackButton.bind(this),
            onRight: this.onRightButtonPress.bind(this)
        });
}

Ini tidak bekerja. Saya pikir itu masalah yang sama.

Coba leftButton alih-alih renderBackButton dan berikan Komponen ke sana.

@kesha-antonov Tidak berfungsi. Saya membuat masalah baru untuk ini.

Ini bekerja untuk saya. rnrf-4-beta22

leftButton untuk ikon kiri
right untuk ikon kanan

komponen publikWillMount (): void {
this.props.navigation.setParams({
kanan: () => {this.myOnRight();},
rightTitle:'Judul baru',
});
}
Ini bekerja untuk saya.

Yesus, saya datang ke sini mencari jawaban untuk masalah aslinya.
Tolong, cobalah untuk tidak membonceng masalah yang tidak terkait!

Saya mengalami masalah yang sama TAPI saat memperbarui toko (mobx)

<strong i="7">@observer</strong>
class Custom extends Component {
  render() {

    // prints every time I update state, this's ok!
    console.log('update', store.session.get('logged'))

    return (
      <Router>
        <Scene key="root">
          <Scene key="login"
            component={login}
            type="replace"
            onEnter={() => {
                // ONLY enter here once
                console.log('onEnter');
                return store.session.get('logged')
            }}
            success="recents"
          />
          <Scene key="recents" component={recents} />
        </Scene>
      </Router>
    )
  }
}

Saya mencoba memicu panggilan 're-render' Actions.refresh() setelah pembaruan toko, tetapi onEnter tidak merespons.

  _onPressButton() {
    store.session.set('logged', !store.session.get('logged')) // invert the value in store
    Actions.refresh() // tested with { key: 'login' } too
  }

issue

@aksonov Bisakah Anda mengarahkan kami ke arah yang benar? :berdoa:

Hai

Saya memiliki masalah yang sama ... Ketika saya mencoba menyegarkan dengan Actions.refresh() tidak ada yang terjadi

import React, { Component } from 'react';
import {
    View,
    Text,
    Button,
} from 'react-native';

import { Actions } from 'react-native-router-flux';

export default class Types extends Component {

    constructor(props) {
        super(props);
        console.log("Constructor Types")
    }

    componentWillMount() {
        console.log('Will mount Types')
    }

    componentWillUpdate() {
        console.log("Will Update Types")
    }

    componentWillUnmount() {
        console.log("will Unmont Types")
    }
    render() {
        console.log("render Types")
        return (
            <Button title='refresh' onPress={() => Actions.refresh()}/>
        )
    }
}

masalah yang sama di sini, saya menggunakan redux dan ketika saya mencoba menyegarkan tombol kanan itu tidak diperbarui.

Harap mereproduksi masalah dengan proyek Contoh.

Actions.refresh({ key: Actions.currentScene }); tidak berfungsi untuk kedua kalinya
https://github.com/aksonov/react-native-router-flux/issues/2862
@aksonov

@jaysassyinfotech
Actions.refresh({ kunci: Actions.currentScene }); tidak bekerja kedua kalinya
Ini berfungsi jika Anda melakukan seperti ini :)
Actions.refresh({key: Math.random()})

@cosinus84 Anda adalah penyelamat.

@cosinus84 Ini benar-benar berfungsi. Wow
Tetapi apakah ada penjelasan mengapa Math.random() melakukan semua trik?

@cosinus84 kamu keren (y)

Semoga acak tidak diperlukan untuk versi terbaru sekarang

@aksonov Tolong bisakah Anda membuat daftar props (dengan fungsinya ) yang dapat kita gunakan di Actions.refresh() karena props Scene sepertinya tidak berfungsi di sini.

Anda dapat memeriksa aplikasi Contoh dan panggilan penyegarannya - ini berfungsi dengan baik di sana dengan 4.0.5 terbaru. Jangan ragu untuk mengkloning dan memodifikasi contoh yang sesuai untuk menunjukkan masalahnya.

Ya, ini berfungsi dengan baik tetapi saya menyarankan Anda untuk membuat daftar alat peraga yang akan digunakan dengan panggilan penyegaran karena kami mungkin tidak tahu yang mana yang akan digunakan kapan.
Misalnya untuk merender tombol kembali kita perlu menggunakan leftButton prop tapi saya tidak tahu itu sampai saya membaca komentar @kesha-antonov

bekerja

@preetluv keberatan memberi tahu saya bagaimana Anda memperbaikinya?

@preetluv lihat jawaban cosinus84

Anda dapat melakukan hal berikut: -

tindakan.pop()
setTimeout(()=> Actions.refresh({"somePropToRefresh":Math.random(),"yourProp":"untuk menyegarkan
layar sebelumnya saat kembali"}),0.5);

Anda dapat memeriksa "yourProp" di componentWillReceiveProps di layar sebelumnya setelah melakukan kembali.

Saya menggunakan react-native-router-flux 4.2.0-beta.2 dan bekerja dengan setTimeout

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

sreejithr picture sreejithr  ·  3Komentar

jgibbons picture jgibbons  ·  3Komentar

moaxaca picture moaxaca  ·  3Komentar

rafaelcorreiapoli picture rafaelcorreiapoli  ·  3Komentar

GCour picture GCour  ·  3Komentar