React Native: это синтетическое событие повторно используется по соображениям производительности. Пытаясь передать состояние - PullRequest
0 голосов
/ 04 сентября 2018

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

Упрощенный экран 1:

import React, { Component } from 'react';
import { View, TextInput} from 'react-native';
import { buttons } from '../../components/buttons/Buttons';

export default class LoginScreen extends Component {
  constructor(props) {
    super(props);

    this.state = {
      username: '',
    }
  }

  render() {
    return(
      <View>
       ...
        <TextInput onChange={(input) => this.setState({username: input})}></TextInput>
        ...
        <Button.main onPress={() => this.props.navigation.navigate('Register', {username: this.state.username})} title='Create Account'/>
      </View>
    )
  }
}

Теперь, если я нажму кнопку, я хочу передать this.state.username на новый экран. Если я не использую onChange={(input) => this.setState({username: input})} и не устанавливаю значение для имени пользователя вручную, как это:

this.state = {
    username: 'Test',
}

Значение передается без проблем, и я могу получить к нему доступ с нового экрана. Но когда я пытаюсь изменить this.state.username, пока меняется TextInput, а затем передать this.state.username, я получаю следующее предупреждение:

Предупреждение. Это искусственное событие используется повторно по соображениям производительности. Если вы видите это, вы получаете доступ к свойству isTrusted в освобожденном / аннулированном синтетическом событии. Это установлено в ноль. Если вы хотите сохранить оригинальное синтетическое событие, используйте event.persist ().

Я не знаю, как использовать event.persist(), как предлагается в предупреждении, и имя пользователя не передается.

Извините, если это глупый вопрос, но я не смог найти решение, и я новичок. Я был бы рад, если бы кто-то мог помочь мне с этим:)

1 Ответ

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

Попробуйте использовать onChangeText вместо onChange.

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