Cuéntanos qué versiones estás usando:
Actions.refresh() actualiza la escena actual.
Si mi enfoque fue incorrecto o Actions.refresh tiene algún requisito, proporcione la información.
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>
);
Cuando estaba en la escena de búsqueda (componente simple con estado), estaba tratando de actualizar la escena usando Actions.refresh. Pero de alguna manera no funcionó en absoluto.
+1
quiero usar renderBackButton desde la escena. Mi código de ejemplo,
public componentWillMount (): void {
Actions.refresh({
renderBackButton: this.renderBackButton.bind(this),
onRight: this.onRightButtonPress.bind(this)
});
}
No funciona. Creo que es el mismo problema.
Pruebe leftButton
en lugar de renderBackButton
y pásele Componente.
@kesha-antonov No funciona. Creo un nuevo problema para esto.
Esto funciona para mi. rnrf-4-beta22
leftButton
para el icono de la izquierda
right
para el icono de la derecha
public componentWillMount(): void {
this.props.navigation.setParams({
onRight: () => {this.myOnRight();},
título derecho: 'nuevo título',
});
}
Funciona para mí.
Jesús, vine aquí buscando una respuesta para el problema original.
¡Por favor, trate de no llevar a cuestas temas no relacionados!
Tengo el mismo problema PERO al actualizar la tienda (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>
)
}
}
Traté de activar el 're-render' llamando a Actions.refresh()
después de la actualización de la tienda, pero onEnter
no responde.
_onPressButton() {
store.session.set('logged', !store.session.get('logged')) // invert the value in store
Actions.refresh() // tested with { key: 'login' } too
}
@aksonov ¿Podría indicarnos la dirección correcta? :rezar:
Hola
Tengo el mismo problema... Cuando trato de actualizar con Actions.refresh() no pasa nada
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()}/>
)
}
}
mismo problema aquí, estoy usando redux y cuando trato de actualizar el botón derecho, simplemente no se actualiza.
Reproduzca el problema con el proyecto de ejemplo.
Actions.refresh({ key: Actions.currentScene });
no funciona la segunda vez
https://github.com/aksonov/react-native-router-flux/issues/2862
@aksonov
@jaysassyinfotech
Acciones.refresh({ clave: Acciones.escena actual }); no funciona la segunda vez
Funciona si te gusta esto :)
Acciones.refresh({clave: Math.random()})
@cosinus84 Usted, señor, es un salvavidas.
@cosinus84 Es realmente un trabajo. Guau
Pero, ¿hay alguna explicación de por qué Math.random() hace todos los trucos?
@ cosinus84 eres un hombre genial (y)
Con suerte, Random no es necesario para la última versión ahora.
@aksonov Por favor, ¿puede enumerar los accesorios (con sus funciones) que podemos usar en Actions.refresh() ya que los accesorios de escena no parecen funcionar aquí?
Puede verificar la aplicación Ejemplo y sus llamadas de actualización: funciona bien allí con la última versión 4.0.5. Siéntase libre de clonar y modificar el ejemplo en consecuencia para demostrar el problema.
Sí, funciona bien, pero le sugiero que haga una lista de accesorios para usar con las llamadas de actualización, ya que es posible que no sepamos cuál usar y cuándo.
Por ejemplo, para renderizar el botón Atrás necesitamos usar leftButton
prop pero no lo sabía hasta que leí el comentario de @kesha-antonov
esta funcionando
@preetluv ¿te importa decirme cómo lo arreglaste?
@preetluv ver la respuesta de cosinus84
puedes hacer lo siguiente:-
Acciones.pop()
setTimeout(()=> Actions.refresh({"somePropToRefresh":Math.random(),"yourProp":"para actualizar el
pantalla anterior al volver"}),0.5);
Puede verificar "yourProp" en componentWillReceiveProps en la pantalla anterior después de hacerlo.
Uso react-native-router-flux 4.2.0-beta.2
y funciona con setTimeout
Comentario más útil
@jaysassyinfotech
Acciones.refresh({ clave: Acciones.escena actual }); no funciona la segunda vez
Funciona si te gusta esto :)
Acciones.refresh({clave: Math.random()})