Как передать состояние между страницами с помощью реагирующей навигации?

Попробуйте следующее:

  SELECT
    id, 
    name,
    report_id
  FROM
  (
    SELECT id,
        report_id,
        name,
        CASE WHEN @name != name THEN @rn := 1 ELSE @rn := @rn + 1 END rn,
        @name:=name
     FROM (SELECT * FROM tbl ORDER BY RAND()) a,
        (SELECT @rn:=0, @name := NULL) r
     ORDER BY name
  ) s
  WHERE rn <= 10;

SQL FIDDLE DEMO

0
задан learningAngular 17 January 2019 в 11:11
поделиться

3 ответа

Передача данных с помощью navigation.navigate не вызовет повторную визуализацию, поскольку она передает копию реквизита. Вам нужно будет найти другой способ отправки реквизита, чтобы ваш компонент узнал об изменениях. Вы можете, например, подключить ваш компонент к вашему состоянию редукции (при условии, что вы используете редукс). Если вы не используете redux, вы можете отправить функцию обновления из родительского компонента navigate('Child', { refresh: refreshFunction } в Child

. Затем вы можете получить доступ к этой функции у дочернего элемента (через что-то вроде this.props.navigation.state.params.refresh(); или const refresh() = this.props.navigation.getParam('regresh')). до обратного действия. Это приведет к обновлению родительского состояния для обновления.

Я надеюсь, что это поможет вам

0
ответ дан Mounir Dhahri 17 January 2019 в 11:11
поделиться

Вы правильно передали данные, но при извлечении данных вы ошиблись let details = props.navigation.getParam("details", "n/a");, просто поставьте this.props вот так console.log(props.navigation.getParam.changeDetails); console.log(props.navigation.getParam.details) console.log просто для отладки, вы можете назначить его любой переменной. получить данные в виде объекта или в форме json. установить это в конструкторе render () или где вы хотите использовать эти данные

0
ответ дан Ashutosh Patel 17 January 2019 в 11:11
поделиться

как сказано в документе:

this.props.navigation.navigate('YOUR TARGET NAME', {
          itemId: 86,
          otherParam: 'anything you want here',
        });

здесь - полный пример, удачи

правка: в дочернем компоненте в [112 ] метод, который вы должны проверить, что если реквизиты изменены, установите новые реквизиты в состояние, тогда компонент будет перерисован с новым состоянием:

componentDidUpdate(){
      if ('YOUR DATA FROM PARENT' != 'PREVIOUS DATA FROM PARENT SAVED IN STATE'){
                this.setState({yourState: 'YOUR DATA FROM PARENT'})
       }
0
ответ дан amirhosein 17 January 2019 в 11:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: