我怎样才能重构这一小段代码,这样我就不会在render中调用一个函数

时间:2018-05-31 04:13:06

标签: react-native refactoring

我在这个page上读到你不应该在render方法中创建函数。解决这个问题的一种方法是绑定。

我的构造函数如下所示:

constructor(props) {
        super(props);
        this.idCheckAlert = this.idCheckAlert.bind(this);
}

我创建的功能:

idCheckAlert = (idForAPI) => () => {
//does some stuff with the idForApi 

}

在我的渲染中:

  <TouchableOpacity 
         style={styles.inputButton}
         onPress={() => { 
         const idForAPI = this.userId;
         this.idCheckAlert(idForAPI); 
         }}
    >

我目前的重构看起来像这样:

<TouchableOpacity 
     style={styles.inputButton}
     onPress={this.idCheckAlert(this.userId)} 
>

但是,我想在onPress中创建一个变量,但是当我这样做时,我会收到一条说明意外令牌的错误消息。有没有办法让我在onPress中创建一个变量,而不必创建函数?

1 个答案:

答案 0 :(得分:0)

在onPress中创建变量不是一个好习惯,就像你说的那样,但是你可以在渲染之后做到这一点

const userId = 1;
return (
<TouchableOpacity 
     style={styles.inputButton}
     onPress={this.idCheckAlert(userId)} 
>
);