【发布时间】:2019-11-04 06:22:40
【问题描述】:
您好,我在 React Native 中为我的设置页面构建了一个列表组件。 我希望设置页面上的每个组件都有一个功能(在某些情况下没有)。
我创建了一个带有objects 的array,我在其中放置了每个项目属性。
const list = [
{
title: 'Change user settings',
icon: 'account-circle',
link: 'UserEdit',
action: this.noFunction()
},
{
title: 'Logout',
icon: 'exit-to-app',
link: 'Auth',
action: this.sessionFunction()
},
]
现在我有两个列表项,每个项都有自己的函数应用于它们的action 属性。
当我在我的应用程序中按下一个 listItem 时,它会调用这两个函数。
但我只想应用与应用关联的功能。
我该怎么做?我的代码中是什么导致了这个错误?
noFunction(){
console.log('noFunction')
}
sessionFunction =() => {
console.log('sessionFunction')
this.deleteSession().then(() => {
this.props.destroySession();
})
}
render(){
const list = [
{
title: 'Change user settings',
icon: 'account-circle',
link: 'UserEdit',
action: this.noFunction()
},
{
title: 'Logout',
icon: 'exit-to-app',
link: 'Auth',
action: this.sessionFunction()
},
]
return (
<View>
{
list.map((item, i) => (
<ListItem
key={i}
title={item.title}
leftIcon={
{ name: item.icon }
}
onPress={() => {
item.action
this.props.navigation.navigate(item.link)
}}
/>
))
}
</View>
)
}
}
【问题讨论】:
-
action: this.sessionFunction()立即执行该函数,它不会将其分配给action,而是将该函数的结果分配给@ 987654329@。由于sessionFunction没有return语句,因此它分配undefined。
标签: javascript arrays reactjs function react-native