Javascript-форум (https://javascript.ru/forum/)
-   Другие библиотеки (https://javascript.ru/forum/library-other/)
-   -   или не умею передавать данные между родителем и дочерним или не знаю useConext (https://javascript.ru/forum/library-other/84804-ili-ne-umeyu-peredavat-dannye-mezhdu-roditelem-i-dochernim-ili-ne-znayu-useconext.html)

riaron86 28.12.2022 13:23

или не умею передавать данные между родителем и дочерним или не знаю useConext
 
или не умею передавать данные между родителем и дочерним или не знаю useConext

index.js:
import React, {createContext} from 'react';
import App from './App';
import ReactDOM from 'react-dom';

export const Context = createContext(null)

ReactDOM.render(
    <Context.Provider value={{
        device: [
			{id:1,name:'hello'},
		],
    }}>
        <App />
    </Context.Provider>,
  document.getElementById('root')
);

App.js
import React, {useContext, useEffect, useState} from 'react';

import './App.css';
import Shop from './components/Shop';

function App() {
  return (
    <Shop/>
  );
}

export default App;

Shop.js:
import React, {useContext, useEffect} from 'react';
import {Context} from "../index";

import Phone from './Phone';

function Shop() {
	    const {device} = useContext(Context)

  return (
	<div>
	 {device.devices.map(device =>
                <Phone key={device.id} device={device}/>
            )}   
	</div>
  );
}

export default Shop;

Phone.js:
import React from 'react';


function Phone({device}) {
  return (
  <div>
  <h1>{device.name}</h1>
	
  </div>
  );
}

export default Phone;

в чем проблема?

Aetae 28.12.2022 14:49

В чём проблема тебе должно быть написано в консоли.

riaron86 28.12.2022 15:12

в браузере ничего не показывает а консоль пишет webpack compiled successfully

Aetae 28.12.2022 15:42

Проверять лень, но у тебя тут как минимум циклический импорт:
index.js -> App.js -> Shop.js -> index.js
Вебпак в таких случаях может глючить(правда в теории при этом должна быть какая-нить ошибка в консоли).
Попробуй вынеси контекст в отдельный файл.


Часовой пояс GMT +3, время: 19:35.