Реагировать навигация передачи данных с вызовом функции на навигацию - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь передать переменную (я могу это сделать) и запустить функцию с этой переменной, как только произошла навигация.

Функция принимает значение поля ввода. Но из-за того, что я назначил поле ввода моей переменной, у меня возникли некоторые проблемы с методом рендеринга, потому что он перезаписывает данные после навигации или даже не записывает их. Он работает при ручном вводе, но мне нужно также передать эту переменную с камеры (это также отлично работает).

Главная страница

  onChange(obj) {
    const value = obj;
    if (value) {
     this.setState({
      buttonDisabled: false,
      text: value,
     });
    } else {
     this.setState({
      buttonDisabled: true,
      text: ''
    });
   }
  };


render() {
    const { navigation } = this.props;
    const scanCode = navigation.getParam('text', '');

    return (
      <View style={{padding: 30, paddingTop: 40}}>
        <TextInput autoFocus
          ref='queryInput'
          style={{height: 40}}
          placeholder="placeholder.."
          value={scanCode === '' ? this.state.text : scanCode}
          onChangeText={this.onChange.bind(this)}
          onSubmitEditing={this.runQuery}
        />
        <Button
          onPress={this.runQuery}
          title="run"
          color="#841584"
          accessibilityLabel="query"
          disabled={this.state.buttonDisabled}
        />
      <Button title='Camera' style={{position: 'absolute', bottom: 0, left: 0}} onPress={() => this.gotoCamera()}></Button>
      </View>
    );
  }
};

Страница камеры

gotoMainPage = () => {
        this.props.navigation.navigate('Home', {
            text: this.state.qrcode
        })
    }
    onBarCodeRead = (e) => this.setState({qrcode: e.data}, () => this.gotoMainPage());

возможно ли установить значение State на главной странице со страницы камеры или что мне здесь делать?

Спасибо

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