Обновление состояния родительского или родительского компонента в React Native

Новичок в React native и ищите подсказку, как это сделать лучше всего.

У меня есть компонент экрана, содержащий модальный компонент, а модальный компонент содержит компонент «Контакты» со списком флажков «Контакты». После нажатия кнопки в модальном окне я хочу обновить состояние компонента экрана.

<Modal animationType = "slide" 
    transparent = {false} 
    visible = {this.state.contactModalVisible} 
    onRequestClose = {()=> {
        this.setState({ contactModalVisible: false});
    }}>
    <ContactList // On pressAButtonInsideHere, how do I update the Screen state? />
</Modal>

Должен ли я поместить кнопку внутри модального компонента и сначала обновить модальный компонент с помощью компонента ContactList? Или можно обновить экран прямо из ContactList?

Поведение ключевого слова "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) для оценки ваших знаний,...
1
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Допустимо обновлять состояние экрана из вложенного компонента (т.е. чего-то внутри вашего компонента <ContactList />). Есть несколько подходов к этому, и наиболее подходящий подход будет зависеть от ваших требований. Однако простой способ сделать это - добавить обратный вызов к <ContactList />.

Так, например, вы можете добавить следующий обратный вызов onButtonPress:

<Modal
  animationType = "slide"
  transparent = {false}
  visible = {this.state.contactModalVisible}
  onRequestClose = {() => {
    this.setState({ contactModalVisible: false});
  }}>
  <ContactList onButtonPress = { () => this.setState({ yourChange : true }) }
    // On pressAButtonInsideHere, how do I update the Screen state?
  />
</Modal>

А затем обновите компонент <ContactList />, чтобы активировать обратный вызов onButtonPress при нажатии (внутреннего) компонента кнопки. Чтобы проиллюстрировать общую идею, рассмотрим этот макет для <ContactList />:

import { Button } from 'react-native'

const ContactList = () => {

  return (<Button onPress = { () => this.props.onButtonPress() } 
                  title = "Button in contact list" />)
}

Отлично работает, спасибо, Дакр Денни. Чего мне не хватало, так это `` реквизита '' в this.props.onButtonPress ()

T_R_U_T_H 10.09.2018 07:00

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