Как вызвать функцию вне метода визуализации поля в React-native? - PullRequest
0 голосов
/ 11 апреля 2019

Привет, эксперты! Я новичок в реактивной среде, помощь будет оценена.

Мне нужно вызвать имя метода openModel (), которое глобально объявлено в Component, и у меня есть метод renderInput, который отображает каждый вход, переданный в теге Field. Когда openModel () вызывается внутри renderInput его входов на Focus. Ошибка показывает, что _this4.openModel не является функцией. Понятно, что это увеличивается из-за многократного вызова метода renderInput. Как это исправить ? Ниже приведен короткий код

class AddPatientForm extends Component {
  constructor(props) {
    super(props);
    openModel = () => {

     this.refs.bGroup.open();

    }

    renderInput({ input, label, type, meta: { touched, error, warning } }) {

        return (
          <View style={{ flexDirection: "row", height: 25, paddingRight: 5, }}>
            <Input
              ref={c => { this.textInput = c }}
              returnKeyType={input.name === "Password" ? "" : "next"}
              onSubmitEditing={() => { this.textInput._root.focus(); }}
              blurOnSubmit={false}
              secureTextEntry={input.name === "Password"}
              {...input}
              onFocus={() => this.openModel()}
              keyboardType={input.name === "mobile" || input.name === "age" ? "numeric" : "default"}
              autoCapitalize="none"
            />
          </View>
        );
      }

     <Field name="patientId" component={this.renderInput} type="" validate={[alphaNumeric,required]} />
}

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Вы можете просто написать OpenModel(), как это -

openModel() {

     this.refs.bGroup.open();

    }

Надеюсь, что это работает!

0 голосов
/ 11 апреля 2019

Пожалуйста, удалите функцию openModel() из constructor, она будет работать для вас, если вы определите свою функцию за пределами constructor

openModel = () => {
    this.refs.modal2.open();
}

, вы можете вызвать ее иопределить внутри класса, а затем напрямую, используя this.openModel();

, если у вас есть глобальная функция и определение вне класса, тогда вам не нужно использовать this ключевые слова.

...