React-native-router-flux: рдХреНрд░рд┐рдпрд╛рдПрдБ.рддрд╛рдЬрд╝рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдЕрдХреНрддреВре░ 2017  ┬╖  24рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: aksonov/react-native-router-flux

рд╕рдВрд╕реНрдХрд░рдг

рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХрд┐рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА-рд░рд╛рдЙрдЯрд░-рдлреНрд▓рдХреНрд╕ v4.0.0-рдмреАрдЯрд╛.12
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ v0.46.4

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░

рдХреНрд░рд┐рдпрд╛рдПрдБред рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ () рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдп рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВред
рдпрджрд┐ рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЧрд▓рдд рдерд╛, рдпрд╛ 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. рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рджреГрд╢реНрдп рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрдЬ рдШрдЯрдХ рдкрд░ рдЬрд╛рдПрдВ (рдпрд╣ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рд╕рд╛рджрд╛ рдШрдЯрдХ рдерд╛)
  2. рдЯреНрд░рд┐рдЧрд░ рдХреНрд░рд┐рдпрд╛рдПрдБред рдмрдЯрди рджрдмрд╛рдХрд░ / рдХреБрдЫ рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдХреЗ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ
needs response from author

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@jaysassyinfotech
рдХреНрд░рд┐рдпрд╛рдПрдБред рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ ({рдХреБрдВрдЬреА: рдХреНрд░рд┐рдпрд╛рдПрдБред рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдп}); рджреВрд╕рд░реА рдмрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛
рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)
рдХреНрд░рд┐рдпрд╛рдПрдБред рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ ({рдХреБрдВрдЬреА: Math.random ()})

рд╕рднреА 24 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

+1
рдореИрдВ рджреГрд╢реНрдп рд╕реЗ рд░реЗрдВрдбрд░рдмреИрдХрдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб,

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

рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИред

renderBackButton рдХреЗ рдмрдЬрд╛рдп renderBackButton leftButton рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдВрдкреЛрдиреЗрдВрдЯ рдкрд╛рд╕ рдХрд░реЗрдВред

@ рдХреЗрд╢рд╛-рдПрдВрдЯреЛрдиреЛрд╡ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рддрд╛ рд╣реВрдВред

рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рдХрд╛рдо рдмрдирддрд╛ рд╣реИред rnrf-4-рдмреАрдЯрд╛22

leftButton рдмрд╛рдПрдВ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП
right рд╕рд╣реА рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдШрдЯрдХ рд╡рд┐рд▓рдорд╛рдЙрдВрдЯ (): рд╢реВрдиреНрдп {
this.props.navigation.setParams({
рдСрдирд░рд╛рдЗрдЯ: () => {this.myOnRight ();},
рд╕рд╣реА рд╢реАрд░реНрд╖рдХ: 'рдирдпрд╛ рд╢реАрд░реНрд╖рдХ',
});
}
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЬреАрд╕рд╕, рдореИрдВ рдпрд╣рд╛рдВ рдореВрд▓ рдореБрджреНрджреЗ рдХреЗ рдЙрддреНрддрд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЖрдпрд╛ рдерд╛ред
рдХреГрдкрдпрд╛, рдЧреИрд░-рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдкрд░ рдЧреБрд▓реНрд▓рдХ рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ!

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрдЯреЛрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп (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
  }

issue

@aksonov рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? :рдкреНрд░рд╛рд░реНрдердирд╛:

рдирдорд╕реНрддреЗ

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ ... рдЬрдм рдореИрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ() рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

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
рдХреНрд░рд┐рдпрд╛рдПрдБред рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ ({рдХреБрдВрдЬреА: рдХреНрд░рд┐рдпрд╛рдПрдБред рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдп}); рджреВрд╕рд░реА рдмрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛
рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)
рдХреНрд░рд┐рдпрд╛рдПрдБред рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ ({рдХреБрдВрдЬреА: Math.random ()})

@cosinus84 рд╕рд░ рдЖрдк рдЬреАрд╡рди рд░рдХреНрд╖рдХ рд╣реИрдВред

@ cosinus84 рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рд╣реИред рдмрд╣реБрдд рдЦреВрдм
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИ рдХрд┐ Math.random() рд╕рднреА рдЪрд╛рд▓реЗрдВ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ?

@cosinus84 рдЖрдк рд░реЙрдХ рдореИрди (y)

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

@aksonov рдХреГрдкрдпрд╛ рдЖрдк рдЙрди рдкреНрд░реЙрдкреНрд╕ (рдЙрдирдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде) рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо Actions.refresh() рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕реАрди рдкреНрд░реЙрдкреНрд╕ рдпрд╣рд╛рдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЖрдк рдЙрджрд╛рд╣рд░рдг рдРрдк рдФрд░ рдЗрд╕рдХреЗ рд░реАрдлреНрд░реЗрд╢ рдХреЙрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдирд╡реАрдирддрдо 4.0.5 рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд▓реЛрди рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рд╣рд╛рдВ, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд░рд┐рдлреНрд░реЗрд╢ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЙрдкреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ рдХрд┐ рдХрдм рдХрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмреИрдХ рдмрдЯрди рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ leftButton рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЬрдм рддрдХ рдореИрдВ @ рдХреЗрд╢рд╛-рдПрдВрдЯреЛрдиреЛрд╡ рдХреА рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдкрдврд╝рддрд╛

рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

@preetluv рдорди рдореБрдЭреЗ рдмрддрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛?

@preetluv рджреЗрдЦреЗрдВ cosinus84 рдХрд╛ рдЬрд╡рд╛рдм

рдЖрдк рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:-

рдХреНрд░рд┐рдпрд╛рдПрдБред рдкреЙрдк ()
setTimeout(()=> Actions.refresh({"somePropToRefresh":Math.random(),"yourProp":" рд░рд┐рдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдкрд┐рдЫрд▓реА рд╕реНрдХреНрд░реАрди рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдкрд░"}),0.5);

рдЖрдк рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд┐рдЫрд▓реА рд╕реНрдХреНрд░реАрди рдореЗрдВ рдХрдВрдкреЛрдиреЗрдВрдЯ WillReceiveProps рдореЗрдВ "yourProp" рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ react-native-router-flux 4.2.0-beta.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕