如何使用非字符串引用而不会导致流错误

时间:2018-03-07 16:51:58

标签: javascript react-native flowtype

我看到字符串引用是遗留的反应: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md

但我在我的组件中遇到此流量错误,并且不知道如何解决它:

[flow] Cannot assign `c` to `this.loginform` because property `loginform` is missing in `LoginScreen` [1]. (References: [1])

我的组件:

/**
 * @flow
 */

// ... imports, tcomb form model, etcetera ...

class LoginScreen extends React.Component<*> {

  onPress() {
    var creds = this.loginform.getValue();
    orbRequestLogin(this.props.navigation, creds, '/oauth/token');
  }

  render() {
    return (
      <Wrap bgcolor="white">
        <Content>
          <KeyboardAvoidingView behavior="padding">
            <Form ref={(c) => { this.loginform = c; }} type={User} options={options} />

            <TouchableHighlight style={styles.button} onPress={this.onPress.bind(this)}>
              <Text style={styles.buttonText}>Log in</Text>
            </TouchableHighlight>

          </KeyboardAvoidingView>
        </Content>
      </Wrap>
    );
  }
}

export default withNavigation(LoginScreen);

1 个答案:

答案 0 :(得分:3)

您需要在班级正文中为loginform提供注释。那就是:

class LoginScreen extends React.Component<*> {
    loginform: Form

流程文档的Class Fields部分对此进行了描述。