Есть ли способ динамически добавлять новый маршрут в React? - PullRequest
0 голосов
/ 04 декабря 2018

Мы создаем приложение, в котором используется собственная навигация React. Зависит от вызова веб-API на основе выходных данных. Мы хотим добавить перенаправление на экран того же типа с другими данными, и этот новый экран может создать другой экран...

Мы используем стековую навигацию с одним маршрутом в начале приложения.Основываясь на вызове Web Api, я хочу внедрить новый маршрут в существующий стек, и он должен иметь возможность вернуться к предыдущим экранам.

Есть ли способ достичь этого ??

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Я бы посоветовал вам создать все возможные маршруты для приложения, и в соответствии с веб-интерфейсом просто перейдите к приложению, какой экран вы хотите с любыми данными.Это все зависит от вас.

0 голосов
/ 04 декабря 2018

Согласно React Navigation Documents, вы можете изменить свой стек в любое время:

index - это индекс маршрута, по которому вы хотите ориентироваться в новом actions массиве маршрутов.(в этом случае мы хотим перейти к маршруту 'NewRoute' и его index равно 1)

import {StackActions, NavigationActions} from "react-navigation"

class Example extends Component {

  // ... Some other methods

  navigate = (id) => {
    const resetAction = StackActions.reset({
      index: 1,
      actions: [
        NavigationActions.navigate({ routeName: 'Home' }),
        NavigationActions.navigate({ routeName: 'NewRoute', params: { id, ...otherParams } }),
      ],
    });
    this.props.navigation.dispatch(resetAction);
  }

  render() {
    return (
      <View>
        <TouchableOpacity onPress={() => this.navigate()}>
          <Text>Go to New Route</Text>
        </TouchableOpacity>
      </View>
    );
  }
}
0 голосов
/ 04 декабря 2018

Цитируется из https://reactnavigation.org/docs/en/navigating.html

Если мы вызовем this.props.navigation.navigate с именем маршрута, которое мы не определили в навигаторе стека, ничего не произойдет.Иными словами, мы можем переходить только к маршрутам, которые были определены в нашем стековом навигаторе - мы не можем перейти к произвольному компоненту.

...