Diga-nos quais versões você está usando:
Actions.refresh() atualiza a cena atual.
Se minha abordagem estiver errada ou o Actions.refresh tiver algum requisito, forneça as informações
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>
);
Quando eu estava na cena de pesquisa (componente simples com estado), estava tentando atualizar a cena usando Actions.refresh. Mas de alguma forma não funcionou.
+1
eu quero usar renderBackButton da cena. Meu código de exemplo,
public componentWillMount (): void {
Actions.refresh({
renderBackButton: this.renderBackButton.bind(this),
onRight: this.onRightButtonPress.bind(this)
});
}
Não está funcionando. Acho que é o mesmo problema.
Tente leftButton
em vez de renderBackButton
e passe Component para ele.
@kesha-antonov Não está funcionando. Eu crio um novo problema para isso.
Funciona para mim. rnrf-4-beta22
leftButton
para o ícone esquerdo
right
para o ícone direito
public componentWillMount(): void {
this.props.navigation.setParams({
onRight: () => {this.myOnRight();},
rightTitle:'newTitle',
});
}
Está funcionando para mim.
Jesus, eu vim aqui procurando uma resposta para o problema original.
Por favor, tente não pegar carona em questões não relacionadas!
Estou com o mesmo problema MAS ao atualizar a loja (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>
)
}
}
Tentei acionar o 're-render' chamando Actions.refresh()
após a atualização da loja, mas onEnter
não está respondendo.
_onPressButton() {
store.session.set('logged', !store.session.get('logged')) // invert the value in store
Actions.refresh() // tested with { key: 'login' } too
}
@aksonov Você poderia nos indicar a direção certa? :rezar:
Oi
Estou com o mesmo problema... Quando tento atualizar com Actions.refresh() nada acontece
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()}/>
)
}
}
mesmo problema aqui, estou usando redux e quando tento atualizar o botão direito, ele simplesmente não atualiza.
Reproduza o problema com o projeto de exemplo.
Actions.refresh({ key: Actions.currentScene });
não está funcionando segunda vez
https://github.com/aksonov/react-native-router-flux/issues/2862
@aksonov
@jaysassyinfotech
Actions.refresh({ chave: Actions.currentScene }); não funciona segunda vez
Funciona se você fizer assim :)
Actions.refresh({chave: Math.random()})
@cosinus84 O senhor é um salva-vidas.
@cosinus84 É realmente um trabalho. Uau
Mas existe alguma explicação por que Math.random() faz todos os truques?
@cosinus84 seu rock man (y)
Espero que random não seja necessário para a versão mais recente agora
@aksonov Por favor, você pode listar os adereços (com suas funções) que podemos usar em Actions.refresh() já que os adereços de cena não parecem estar funcionando aqui.
Você pode verificar o aplicativo de exemplo e suas chamadas de atualização - ele funciona bem com a versão 4.0.5 mais recente. Sinta-se à vontade para clonar e modificar o exemplo de acordo para demonstrar o problema.
Sim, está funcionando bem, mas sugiro que você faça uma lista de adereços a serem usados com chamadas de atualização, pois podemos não saber qual usar quando.
Por exemplo, para renderizar o botão voltar, precisamos usar leftButton
prop, mas eu não sabia disso até ler o comentário de @kesha-antonov
está funcionando
@preetluv se importa em me dizer como você consertou?
@preetluv veja a resposta de cosinus84
você pode fazer o seguinte: -
Actions.pop()
setTimeout(()=> Actions.refresh({"somePropToRefresh":Math.random(),"yourProp":"para atualizar o
tela anterior ao voltar"}),0.5);
Você pode verificar o "yourProp" em componentWillReceiveProps na tela anterior depois de fazer o back.
Eu uso react-native-router-flux 4.2.0-beta.2
e funciona com setTimeout
Comentários muito úteis
@jaysassyinfotech
Actions.refresh({ chave: Actions.currentScene }); não funciona segunda vez
Funciona se você fizer assim :)
Actions.refresh({chave: Math.random()})