То, как вы это сделали, возможно, самый распространенный и вполне приемлемый.
Обычно это не проблема, если есть только несколько обработчиков (и они не передаются глубоко).
Вы могли бы объединить их в объект и единую опору, но я обычно не вижу, как это делается таким образом, и я не думаю, что есть сильная выгода.
Вы также можете передать несколько реквизитов в качестве одного спреда без необходимости связывать их в один реквизит.
Если вы начнете получать больше обработчиков, чем вам удобно, то, вероятно, самое время посмотреть, как вы справляетесь с управлением состоянием. Вам может быть лучше с редуктором и диспетчерскими действиями в этой точке.
Обновление
Несколько других замечаний о вашем коде:
- Вы можете деструктурировать реквизиты для более удобного использования.
- Вы не можете нужен отдельный закрывающий тег для
View
, если нет содержимого. - Вам не нужно создавать новые функции стрелок для обработчиков событий, если все, что вы делаете, это вызывает другую функцию стрелки. Вы можете просто установить для нее функцию первой стрелки.
- Рассмотрим троицу, чтобы разрешить неявный возврат.
function RenderDish({dish, favorite, onFavorite, onComment}) =>
dish
? <Card featuredTitle={dish.name} image={{ uri: baseUrl + dish.image }}>
<Text style={{ margin: 10 }}>
{dish.description}
</Text>
<View style={{ display: "flex", flexDirection: "row", alignItems: "center", justifyContent: "center" }}>
<Icon raised reverse name={favorite ? 'heart' : 'heart-o'} type='font-awesome' color='#f50'
onPress={() => favorite ? console.log('Aleady Favorite') : onFavorite()} />
<Icon raised reverse name='pencil' type='font-awesome' color='#3b5998'
onPress={onComment} />
</View>
</Card>
: <View/>
Я бы больше сосредоточился на этих элементах, чем на связывании этих элементов. две функции.