React Native - обрабатывает родительское состояние дочернего компонента (пользовательский компонент) без функции добавления в родительском. - PullRequest
0 голосов
/ 20 сентября 2018

Я прочитал этот ответ , но я хочу немного изменить структуру кода,

на самом деле я хочу установить родительское состояние для дочернего компонента, но я не хочу добавлять какую-либо функцию в родительский компонент

на самом деле ожидаемый результат выглядит так:

class Parent extends React.Component {
  constructor(props) {
    super(props)
    this.state={modalVisible:false}
  }

  render() {
    return (
      <Child modalVisible={this.state.modalVisible} />
      <Button onClick={()=>this.setState({modalVisible:true})/>
    )
  }
}

class Child extends React.Component {

  handler(e) {
    //handle parent moadlVisible state to false again
  }

  render() {
    return
      <Modal
        modalVisible = {this.props.modalVisible}>
        <Button title="Close Modal" onPress={()=>this.handler(e)}/>
      </Modal>
  }
}

, поэтому я хочу, чтобы его было легко вызватьchild component без добавления какой-либо функции в parent для обработки самого child component, даже для закрытия modal из child component

Есть ли способ добиться того, чего я хочу?

1 Ответ

0 голосов
/ 20 сентября 2018

Если вам вообще не нужно какое-либо соединение между двумя компонентами, вам, возможно, придется использовать глобальное хранилище состояний, такое как redux.

Документы можно найти здесь:

https://redux.js.org/introduction

Redux создает глобальное состояние вместо локального состояния между всеми компонентами.Это требует небольшой настройки, но после полной интеграции вы можете справиться со своим сценарием.Кроме того, по мере роста ваших компонентов будет легче отслеживать состояние.

Почему я не могу просто использовать события?

Цитата в вопросе здесь ..

response.js настраиваемые события для общенияс родительскими узлами

В качестве способа React можно было бы явно передавать обратные вызовы дочерним элементам через props -.В React нет поддержки пользовательских событий с пузырями.

Абстракция реактивного программирования является ортогональной:

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

Ужасный способ сделать это на мой взгляд, возможно, будет использовать Async Storage

хранить значение ключа, но я не собираюсь это предлагать.

...