Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.01.2020, 05:43
Новичок на форуме
Отправить личное сообщение для Vlad Kopernikov Посмотреть профиль Найти все сообщения от Vlad Kopernikov
 
Регистрация: 09.01.2020
Сообщений: 2

Как корректно передать переменные с json данными в другой компонент через контекст?
Пытаюсь передать переменные с json данными в компонент для их дальнейшего использования, но натыкаюсь на ошибки. Что следует изменить чтобы переменные с json массивами из Store.js можно было использовать в product.js?
Спасибо за уделенное время! Совсем недавно приступил к изучению, пардон за недальновидность

https://jsfiddle.net/constant101/xu7zdn26/3/

```
//Store export(receiving data from the server and assigning them to variables)
import React, {useState, useEffect} from 'react'
import axios from 'axios'

export const ListContext = React.createContext([]);
export const ItemContext = React.createContext([]);

function Store() {
const [storeProducts, setStoreProducts] = useState([]);
const [detailProduct, setDetailProduct] = useState([]);

useEffect(() => {
axios.get('/products/')
.then(res => {
console.log(res)
setStoreProducts(res.data)
})
},[])
console.log('storeProducts:', storeProducts)

useEffect(() => {
axios.get('/products/roductId')
.then(res => {
console.log(res)
setDetailProduct(res.data)
})
},[])
console.log('detail product:', detailProduct)
return (







);
}
export const detailProduct
//product.js ( file that uses data from the fetch)
import React, { useReducer, createContext, useContext, useState } from 'react';
import {ListContext, ItemContext } from '../Store';
import { useProductActions } from '../actions';
import { SET_PRODUCT_DETAILS } from '../actions/types';

const [storeProducts] = useContext(ListContext);
const [detailProduct] = useContext(ItemContext);

let tempProducts = [];

storeProducts.forEach(item => tempProducts.push({ ...item })
);

const initialState = {
products: tempProducts,
productDetails: { ...detailProduct }
};
console.log(storeProducts)

const productReducer = (state, action) => {
switch (action.type) {
case SET_PRODUCT_DETAILS:
return {
...state,
productDetails: action.payload
};
default:
throw new Error('Invalid action type');
}
};

export const ProductContext = createContext(initialState);

export const useProductState = () => {
return useContext(ProductContext);
};

export const ProductProvider = ({ children }) => {
const [state, dispatch] = useReducer(productReducer, initialState);
const productActions = useProductActions(state, dispatch);
return (

{children}

);
};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать файл через API FILE в виде dataurL и принять на сервере. Как? platedz AJAX и COMET 22 04.06.2013 13:29
Как передать через onchange несколько параметров? Arey AJAX и COMET 5 14.08.2012 16:31
Как в страницу подгружаемую через AJAX передать $_GET? pagal AJAX и COMET 7 08.11.2011 21:09
Как передать referrer в iframe через jQuery? Zippa jQuery 1 25.06.2011 14:39
Как передать false через функцию? Tend Общие вопросы Javascript 7 16.03.2009 16:55