Сообщите нам, какие версии вы используете:
Actions.refresh() обновляет текущую сцену.
Если мой подход был неверным или у Actions.refresh есть какие-то требования, предоставьте мне информацию
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>
);
Когда я был на сцене поиска (простой компонент с состоянием), я пытался обновить сцену с помощью Actions.refresh. Но как-то совсем не получалось.
+1
я хочу использовать renderBackButton из сцены. Мой пример кода,
public componentWillMount (): void {
Actions.refresh({
renderBackButton: this.renderBackButton.bind(this),
onRight: this.onRightButtonPress.bind(this)
});
}
Это не работает. Я думаю, что это та же проблема.
Попробуйте leftButton
вместо renderBackButton
и передайте ему Component.
@kesha-antonov Не работает. Я создаю новую проблему для этого.
Меня устраивает. ррнф-4-бета22
leftButton
для левого значка
right
для правой иконки
общедоступный компонентWillMount (): недействительным {
this.props.navigation.setParams({
справа: () => {this.myOnRight();},
rightTitle:'новыйЗаголовок',
});
}
Это работает для меня.
Господи, я пришел сюда в поисках ответа на первоначальный вопрос.
Пожалуйста, постарайтесь не лезть в чужие дела!
У меня такая же проблема, НО при обновлении магазина (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>
)
}
}
Я попытался вызвать «повторный рендеринг», вызвав Actions.refresh()
после обновления магазина, но onEnter
не отвечает.
_onPressButton() {
store.session.set('logged', !store.session.get('logged')) // invert the value in store
Actions.refresh() // tested with { key: 'login' } too
}
@aksonov Не могли бы вы указать нам правильное направление? :молиться:
Привет
У меня та же проблема... Когда я пытаюсь обновить с помощью Actions.refresh(), ничего не происходит
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()}/>
)
}
}
та же проблема, я использую избыточность, и когда я пытаюсь обновить правую кнопку, она просто не обновляется.
Пожалуйста, воспроизведите проблему с примером проекта.
Actions.refresh({ key: Actions.currentScene });
не работает во второй раз
https://github.com/aksonov/react-native-router-flux/issues/2862
@aksonov
@jaysassyinfotech
Actions.refresh({ключ: Actions.currentScene}); не работает второй раз
Это работает, если вы делаете так :)
Actions.refresh({ключ: Math.random()})
@ cosinus84 Вы, сэр, спасатель.
@ cosinus84 Это действительно работа. Вот это да
Но есть ли какое-нибудь объяснение, почему Math.random() выполняет все трюки?
@cosinus84 ты крутой мужик (у)
Надеюсь, рандом не нужен для последней версии сейчас
@aksonov Пожалуйста, не могли бы вы перечислить реквизиты (с их функциями), которые мы можем использовать в Actions.refresh(), поскольку реквизиты сцены, похоже, здесь не работают.
Вы можете проверить пример приложения и его вызовы обновления - оно отлично работает с последней версией 4.0.5. Не стесняйтесь клонировать и модифицировать пример соответствующим образом, чтобы продемонстрировать проблему.
Да, это работает нормально, но я предлагаю вам составить список реквизитов, которые будут использоваться с вызовами обновления, поскольку мы можем не знать, какой из них использовать, когда.
Например, чтобы отобразить кнопку «Назад», нам нужно использовать реквизит leftButton
, но я не знал об этом, пока не прочитал комментарий @kesha-antonov.
это работает
@preetluv не подскажете , как вы это исправили?
@preetluv см. ответ cosinus84
вы можете сделать следующее: -
Действия.pop()
setTimeout(()=> Actions.refresh({"somePropToRefresh":Math.random(),"yourProp":"для обновления
предыдущий экран при возврате"}),0.5);
Вы можете проверить «yourProp» в componentWillReceiveProps на предыдущем экране после выполнения обратного действия.
Я использую react-native-router-flux 4.2.0-beta.2
, и он работает с setTimeout.
Самый полезный комментарий
@jaysassyinfotech
Actions.refresh({ключ: Actions.currentScene}); не работает второй раз
Это работает, если вы делаете так :)
Actions.refresh({ключ: Math.random()})