我如何在React-native中调用Field渲染方法之外的函数?

时间:2019-04-11 07:06:54

标签: react-native react-redux render

嗨,专家们,我是React-native的新手,我们将不胜感激。

我需要调用在组件中全局声明的方法名称openModel(),并且我有一个renderInput方法,该方法呈现在Field标记中传递的每个Input。当openModel()在其Inputs上的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 :(得分:0)

请从openModel()中删除您的constructor函数,如果您在constructor之外定义函数,则将为您工作

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

您可以调用函数并在类内部进行定义,然后直接使用this.openModel();

如果您具有全局功能并在类外部进行定义,则无需使用this关键字。

答案 1 :(得分:0)

您可以像这样简单地写OpenModel()-

openModel() {

     this.refs.bGroup.open();

    }

希望它能起作用!