#javascript #reactjs #react-native
#javascript #reactjs #react-native
Вопрос:
Здравствуйте, я новичок в react, и я создаю приложение для ресторана, поэтому я столкнулся с проблемой, которая возникает, когда я преобразовал свое приложение класса react в перехватчики react, почему это плохо работает в перехватчиках React, если в классах React это работает
const RenderDish = (props) => {
const dish = props.dish;
if (dish != null) {
return (
<Card
featuredTitle={dish.name}
image={require('./images/uthappizza.png')}
>
<Text style={{ margin: 10 }}>
{dish.description}
</Text>
<Icon
raised
reverse
name={ props.favorite ? 'heart' : 'heart-o' }
type='font-awesome'
color='#f50'
onPress={() => props.favorite ? console.log('Already favorite') : props.onPress()}
/>
</Card>
);
}
else {
return(
<View></View>
)
}}
const Dishdetail = (props) => {
const [dishes, setDishes] = useState(DISHES);
const [comments, setComments] = useState(COMMENTS);
const [favorites, setFavorites] = useState([])
const markFavorite = (dishId) => setFavorites({ favorites: favorites.concat(dishId) })
const dishId = props.route.params.dishId;
return (
<ScrollView>
<RenderDish dish={dishes[ dishId]}
favorite={favorites.some(el => el === dishId)}
onPress={() => markFavorite(dishId)}
/>
<RenderComments comments={comments.filter(comment => comment.dishId === dishId)} />
</ScrollView>
);}
Это синтаксис ошибки
Ошибка типа: избранное.some не является функцией, (В ‘favorites.some(function (el) { return el === dishId; })’избранное.some’ не определено)
Ответ №1:
У вас несовпадающие типы: вы устанавливаете объект здесь: setFavorites({ favorites: favorites.concat(dishId) })
а затем пытаетесь получить доступ к некоторому методу массива здесь: favorites.some(el => el === dishId)
Обновите, чтобы установить массив:
setFavorites(favorites.concat(dishId));
Комментарии:
1. Боже, это правда, большое тебе спасибо, Сэмюэль, я этого не видел. Этого больше не произойдет