أخبرنا بالإصدارات التي تستخدمها:
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
وقم بتمرير المكون إليه.
@ kesha-antonov إنه لا يعمل. أنا خلقت قضية جديدة لهذا.
إنه يعمل بالنسبة لي. rnrf-4-بيتا 22
leftButton
للرمز الأيسر
right
للرمز الصحيح
public componentWillMount (): void {
this.props.navigation.setParams ({
onRight: () => {this.myOnRight () ؛} ،
rightTitle: "newTitle"،
}) ؛
}
انها تعمل بالنسبة لي.
يا يسوع ، لقد جئت إلى هنا باحثًا عن إجابة للمسألة الأصلية.
من فضلك ، حاول ألا تستسلم للقضايا غير ذات الصلة!
أواجه نفس المشكلة ولكن عند تحديث المتجر (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()}/>
)
}
}
نفس المشكلة هنا ، أنا أستخدم redux وعندما أحاول تحديث الزر الأيمن ، لا يتم تحديثه.
يرجى إعادة إنتاج المشكلة مع مشروع المثال.
Actions.refresh({ key: Actions.currentScene });
لا يعمل للمرة الثانية
https://github.com/aksonov/react-native-router-flux/issues/2862
تضمين التغريدة
تضمين التغريدة
Actions.refresh ({key: Actions.currentScene}) ؛ لا يعمل مرة ثانية
إنه يعمل إذا كنت تحب هذا :)
Actions.refresh ({key: Math.random ()})
@ cosinus84 أنت يا سيدي المنقذ.
@ cosinus84 هو حقا العمل. رائع
ولكن هل هناك أي تفسير لماذا يقوم Math.random () بكل الحيل؟
@ cosinus84 يا رجل الروك (ذ)
نأمل ألا تكون هناك حاجة إلى العشوائية لأحدث إصدار الآن
aksonov من فضلك ، هل يمكنك سرد الدعائم (مع وظائفها) التي يمكننا استخدامها في Actions.refresh () حيث لا يبدو أن دعائم المشهد تعمل هنا.
يمكنك التحقق من تطبيق Example ومكالمات التحديث الخاصة به - إنه يعمل بشكل جيد مع الإصدار 4.0.5 الأحدث. لا تتردد في استنساخ وتعديل المثال وفقًا لذلك لتوضيح المشكلة.
نعم ، إنها تعمل بشكل جيد ولكن أقترح عليك عمل قائمة بالدعائم لاستخدامها مع مكالمات التحديث لأننا قد لا نعرف أي منها يجب استخدامه ومتى.
على سبيل المثال لعرض زر الرجوع نحتاج إلى استخدام leftButton
prop لكنني لم أكن أعرف ذلك حتى قرأت تعليق @ kesha-antonov
انها تعمل
preetluv عقل تخبرني كيف أصلحته؟
preetluv انظر إجابة cosinus84
يمكنك القيام بما يلي: -
Actions.pop ()
setTimeout (() => Actions.refresh ({"somePropToRefresh": Math.random () ، "yourProp": "لتحديث
الشاشة السابقة عند الرجوع "}) ، 0.5) ؛
يمكنك التحقق من "yourProp" في componentWillReceiveProps في الشاشة السابقة بعد التراجع.
أنا استخدم react-native-router-flux 4.2.0-beta.2
وهو يعمل مع setTimeout
التعليق الأكثر فائدة
تضمين التغريدة
Actions.refresh ({key: Actions.currentScene}) ؛ لا يعمل مرة ثانية
إنه يعمل إذا كنت تحب هذا :)
Actions.refresh ({key: Math.random ()})