#javascript #vue.js #local-storage #vuejs3
#язык JavaScript #vue.js #локальное хранилище #vuejs3
Вопрос:
Я пытаюсь добавить товар корзины в localStorage в Vue 3. Я использую API композиции и только изучаю Vue, поэтому, пожалуйста, будьте понятливы 😀
Хорошо, так что это мой код представления одного продукта, в котором я вызываю функцию addProductToCart
export default { props: { id: { required: true, type: String } }, setup(props) { const { product, getProduct } = useProducts() onMounted(getProduct(props.id)) let cartItems = ref([]) function addProductToCart(product) { cartItems.value.push({...product}) window.localStorage.setItem('CART', JSON.stringify(cartItems.value)) console.log(JSON.parse(localStorage.getItem('CART'))); } return { addProductToCart, product } } }
Проблема в том, когда я перезагружаю страницу. Состояние товаров в корзине сохраняется, но когда я добавляю другой товар после обновления страницы локального хранилища, он сбрасывается.
Проблема в том, что она здесь:
let cartItems = ref([])
Я пытаюсь проверить, не является ли локальное хранилище пустым, и когда оно не равно нулю, я хочу добавить другие товары в существующее состояние товаров в корзине, поэтому пытаюсь сделать вот так:
let cartItems = ref([]) if (window.localStorage.getItem('CART') !== null) { cartItems = window.localStorage.getItem('CART') }
Но когда я нажимаю кнопку ДОБАВИТЬ В КОРЗИНУ, я получаю сообщение об ошибке:
Uncaught TypeError: Cannot read properties of undefined (reading 'push')
Я искал в Интернете много информации о состоянии тележек, но не нашел ничего разумного в том, где они представляют собой хранилище состояний тележки с использованием API композиции.
Возможно, кто-то из вас знает какой-нибудь классный материал, который покажет вам, как правильно создать корзину покупок с помощью API композиции.
Спасибо!
Ответ №1:
вам нужно установить значение ref, а также проанализировать значение локального хранилища
let cartItems = ref([]) if (window.localStorage.getItem('CART') !== null) { cartItems.value = JSON.parse(window.localStorage.getItem('CART')); }
Комментарии:
1. Теперь у меня есть ошибка: ошибка типа: cartItems.value. толчок — это не функция
2. Хорошо, когда я использую JSON.проанализируйте условие if, все это работает! Спасибо! 😀
Ответ №2:
Я считаю, что вы должны использовать cartItems.value в своем коде:
let cartItems = ref([]) if (window.localStorage.getItem('CART') !== null) { cartItems.value = window.localStorage.getItem('CART') }
Комментарии:
1. Теперь у меня есть ошибка: ошибка типа: cartItems.value. толчок — это не функция
2. О’кей, когда я использую JSON.анализирую условие if и названия.значение, все это работает! Спасибо! 😀