Как передать реквизиты дочернему компоненту от родителя в react-native?

Есть ли идеи, как отправлять реквизиты дочернему компоненту из родительского в react native. Я слышал об этом, но не знаю в react-native. Все, что я хочу, это когда пользователь нажимает кнопку AddToCart, которая на самом деле обернута в событие onpress с сенсорной непрозрачностью, реквизиты должны быть отправлены на другую страницу. Кто-то сказал мне об использовании redux, но я думаю, что это может произойти и в response-native.

Bottom Line: There's a button when it pressed the props should be sent to another page.

Страница ItemDetais

Откуда следует отправлять реквизит.

cart() {
  let product_id = this.props.navigation.state.params.id;
  AsyncStorage.getItem('cart_id')
    .then((_id) => {
      API.post_data(_id, product_id)
        .then((data) => {
          if (data) {
            // this.props.navigation.navigate('Cart', {id: data.cart.id})
            // was using this method.But when I directly open
            // cart page it gives me an error undefined is not
            //  an object..blah blah
          }
        })
    })
}

<TouchableOpacity onPress = {()=> { this.cart() }} >
    <Text>AddToCart<Text>
</TouchableOpacity>

CartPage

где должен быть получен реквизит.

componentDidMount() {
  let cart_id = this.props.navigation.state.params.id;
  // above method is just total waste.
  API.getCartItem(cart_id)
    .then((response) => {
    if (response) {
      this.setState({
        data: response
      });
    } else {
      alert('no data')
    }
  })
}
an error undefined is not an object..blah blah Какую именно ошибку вы получаете?
Tholle 20.07.2018 14:01

@Tholle TypeError: undefined не является объектом .. (оценка this.props.navigation.state.params.id)

Yash 20.07.2018 14:17

Вы можете отправить данные с помощью "this.props.navigation.navigate ('Cart', {id: data.cart.id})" и просто проверить, если (this.props.navigation.state.params.id) {cart_id = this.props.navigation.state.params.id}

Md Isfar Uddin AlNur 20.07.2018 14:43

Я получил данные успешно. Но если я открываю страницу корзины напрямую, не нажимая кнопку addToCart ... это дает мне ошибку undefined is not an object. (Оценка this.props.navigation.state.params.id)

Yash 20.07.2018 14:51

Создайте локальное состояние, которое обновляется и передается дочернему компоненту. Итак, когда вы нажимаете кнопку, вы обновляете состояние в родительском элементе, а затем это обновленное состояние передается дочернему компоненту.

Sangsom 20.07.2018 15:51

@Sangsom Как мне обновить состояние, вызвав функцию, которая, конечно, является тележкой ...

Yash 20.07.2018 16:06

@Yash stackoverflow.com/questions/35537229/…

Sangsom 23.07.2018 08:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
434
1

Ответы 1

Согласно React Navigation документы это должно работать:

componentDidMount() {
  const { navigation } = this.props;
  // The 'NO-ID'  is a fallback value if the parameter is not available
  const cart_id = navigation.getParam('id', 'NO-ID');
  ...
}

Спасибо за ответ. с помощью этого метода исчезла только ошибка ... но пользователь также получает возможность навигации, включая cart_id ... Все, что я хочу, - это просто параметры, которые должны передаваться от родителя к дочернему или с одной страницы на другую, не позволяя пользователю перемещаться ... Просто параметры ... может ли это быть возможно в ответной навигации

Yash 20.07.2018 15:57

Итак, вы хотите, чтобы пользователь добавлял товар в корзину, не переходя каждый раз на страницу корзины? Самый чистый способ сделать это - использовать redux. Но если вы В самом деле не хотите использовать redux, вы можете сохранить массив элементов, например itemsInCart, в состоянии каждого экрана. Затем вы можете передавать его на другой экран каждый раз, когда вызываете навигацию. Таким образом, каждая навигация будет выглядеть так .props.navigation.navigate ('ScreenName', {id: data.cart.id}). Я думаю, что это действительно неудобно, но я не могу придумать другого способа без использования redux.

Sarp 20.07.2018 18:54

да, я тоже считаю, что это слишком неудобно. Я немного знаю о redux .. Итак, как с этим справиться в redux ??

Yash 21.07.2018 10:45

Другие вопросы по теме