Компонент реагировать-родной-материал-диалог не может быть открыт через глобальную ссылку - PullRequest
0 голосов
/ 11 июня 2019

Я хочу иметь глобальное окно ModalWindow, к которому я могу получить доступ из любого места в моем приложении ReactNative, например, в моем App.js.Когда я пытаюсь установить состояние из другого места в программе, это не позволяет мне.

В конструкторе для класса InfoModal я назначаю указатель объектов для хранения в глобальной переменной.Оттуда я могу изменить значение состояния, и метод визуализации будет вызван, когда это будет сделано, однако ... Модальное окно не откроется, даже если состояние истинно.

class InfoModal extends React.Component{
  constructor(props){
    super(props);
    this.state = {
      is_open : true,
      is_loaded : true
    };
    global.INFO_MODAL = this;
  }

  close = () =>{
    console.log("Close");
    this.setState({
      is_open : false
    });
    this.forceUpdate();
  }

  open = () =>{
    console.log("Open");
    this.setState({
      is_open : true
    });
    this.forceUpdate();
  }

  render(){
    console.log(this.state.is_open);
    if(this.state.is_open){
      console.log("HIII i'm called");
      return(
        <MaterialDialog
          title = {"Slynluder"}
          visible = {true}
          onOk = { () => this.close()}
          onCancel = { () => this.close() } >
          <Text style={this.props.dialogText}>
            This is my content for the dialog
          </Text>
        </MaterialDialog>
       );
    }else{
      return null;
    }
  }
}

Когда я тогда вызываю global.INFO_MODAL.open ();из другого места в программе console.log («Открыто называется») и состояние изменяется, но диалог не открывается.То, что я хотел бы, чтобы диалог был открыт.Любые советы приветствуются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...