Передача функции от объекта в React Native ListView - PullRequest
0 голосов
/ 03 января 2019

Я определяю функцию внутри объекта, а затем передаю ее в ListView.

Однако у меня возникают проблемы с запуском функции onPress.На данный момент он ничего не делает при нажатии.

export default class Settings extends Component {
    componentWillMount() {
        const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 })
        const listItems = [
            { title: 'Profile', icon: 'ios-contact', action: () => console.log('Profile') },
            { title: 'Log out', icon: 'ios-log-out', action: () => console.log('Log out') }
        ]
        this.setState({ dataSource: ds.cloneWithRows(listItems) })
    }

    render() {
        return (
            <ListView
                dataSource={this.state.dataSource}
                renderRow={(item) => 
                    <TouchableOpacity onPress={() => item.action}>
                        <View>
                            <Ionicons name={item.icon} size={20} />
                            <Text>{item.title}</Text>
                        </View>
                    </TouchableOpacity>
                }
            />
        )
    }
};

Я довольно новичок в React / JS, поэтому я подозреваю, что это может быть проблемой синтаксиса.Спасибо!

1 Ответ

0 голосов
/ 03 января 2019

Вы должны удалить жирную стрелку из TouchableOpacity onPress, как это

<TouchableOpacity onPress={item.action}>

Это будет работать.

Редактировать: Я создал проект на закуску.Вы видите, что этот подход решит вашу проблему.

https://snack.expo.io/HJS68AjWN

...