如何在 react-native-collapsible 手风琴组件中使用 `this`?
How to use `this` in react-native-collapsible accordion component?
我有一个 react-native 屏幕,我想在其中使用 react-native-collapsible accordion 组件来显示资产列表。在手风琴所需的 rendercontent
属性中,我传入了一个定义在屏幕组件内部的函数 sellAsset
,我使用 this
关键字来引用屏幕组件。但是没用,老是告诉我this.sellAsset is not a function
。请看下面的代码。
尝试了一些函数绑定但没有成功。传递给手风琴组件的 this
似乎没有指向屏幕组件。
那么如何正确调用this.sellAsset
呢?
renderContent(item) {
return (
<View style={[styles.imageContent]}>
<View style={[styles.detailContainer, {paddingVertical: 0}]}>
<Image source={getImage(_.get(item, ['Asset', 'image']))} resizeMode="contain" style={styles.assetImage}/>
</View>
<View style={styles.priceContainer}>
<CustomSignInButton
text="SELL"
onPress={() => {this.sellAsset();}}
buttonBackgroundColor="transparent"
buttonBorderColor="white"
buttonTextColor="white"
buttonHeight={30}
/>
</View>
</View>
);
}
render() {
return (
<LinearGradient colors={[Colors.splashGradient.top, Colors.splashGradient.middle, Colors.splashGradient.bottom]}
style={{flex: 1}}>
<View style={styles.container}>
<IOSStatusBar backgroundColor="transparent"/>
{this.state.transactionDetails !== null ?
(this.state.transactionDetails.length > 0 &&
<Accordion sections={this.state.transactionDetails} renderHeader={this.renderHeader}
renderContent={this.renderContent} underlayColor={Colors.rowSeparatorBlue}
/>
) : <View/>
}
</View>
</LinearGradient>
);
}
}
如果我没理解错的话,sellAsset() 是你的屏幕组件上的一个方法吗?
您有两个选择:
1.将两种方法绑定到 this
class YourScreen extends React.Component {
constructor(props) {
this.renderContent = this.renderContent.bind(this);
this.sellAsset = this.sellAsset.bind(this);
}
sellAsset() { ... }
renderContent() { ... }
}
2。使用箭头函数
class YourScreen extends React.Component {
sellAsset = () => { ... }
renderContent = (item) => { ... }
}
我有一个 react-native 屏幕,我想在其中使用 react-native-collapsible accordion 组件来显示资产列表。在手风琴所需的 rendercontent
属性中,我传入了一个定义在屏幕组件内部的函数 sellAsset
,我使用 this
关键字来引用屏幕组件。但是没用,老是告诉我this.sellAsset is not a function
。请看下面的代码。
尝试了一些函数绑定但没有成功。传递给手风琴组件的 this
似乎没有指向屏幕组件。
那么如何正确调用this.sellAsset
呢?
renderContent(item) {
return (
<View style={[styles.imageContent]}>
<View style={[styles.detailContainer, {paddingVertical: 0}]}>
<Image source={getImage(_.get(item, ['Asset', 'image']))} resizeMode="contain" style={styles.assetImage}/>
</View>
<View style={styles.priceContainer}>
<CustomSignInButton
text="SELL"
onPress={() => {this.sellAsset();}}
buttonBackgroundColor="transparent"
buttonBorderColor="white"
buttonTextColor="white"
buttonHeight={30}
/>
</View>
</View>
);
}
render() {
return (
<LinearGradient colors={[Colors.splashGradient.top, Colors.splashGradient.middle, Colors.splashGradient.bottom]}
style={{flex: 1}}>
<View style={styles.container}>
<IOSStatusBar backgroundColor="transparent"/>
{this.state.transactionDetails !== null ?
(this.state.transactionDetails.length > 0 &&
<Accordion sections={this.state.transactionDetails} renderHeader={this.renderHeader}
renderContent={this.renderContent} underlayColor={Colors.rowSeparatorBlue}
/>
) : <View/>
}
</View>
</LinearGradient>
);
}
}
如果我没理解错的话,sellAsset() 是你的屏幕组件上的一个方法吗?
您有两个选择:
1.将两种方法绑定到 this
class YourScreen extends React.Component {
constructor(props) {
this.renderContent = this.renderContent.bind(this);
this.sellAsset = this.sellAsset.bind(this);
}
sellAsset() { ... }
renderContent() { ... }
}
2。使用箭头函数
class YourScreen extends React.Component {
sellAsset = () => { ... }
renderContent = (item) => { ... }
}