Я пытаюсь передать данные с помощью Context API дочерним компонентам. Значение получает undefined
при получении его из компонента.
Иерархия компонентов :
- передача данных в компонент
MockTable
и UsecasePane
MainContent -> MockTable
MainContent -> AddMock -> TabContent -> UsecasePane
=> MockContext. js
import React, { useState, useEffect, createContext } from "react";
import axios from "axios";
export const MockContext = createContext();
// provider
export const MockProvider = (props) => {
const [data, setData] = useState([]);
// data fetch and setting the state
return (
<MockContext.Provider data={[data, setData]}>
{props.children}
</MockContext.Provider>
);
};
- Примечание: я получаю ответ от API.
Теперь в MainContent
компоненты инкапсулируются следующим образом:
// MainContent.js
import React from "react";
import { MockProvider } from "../MockContext";
const MainContent = () => {
return (
<MockProvider>
<div>
<CustomerTable />
<AddMock />
<MockTable />
</div>
</MockProvider>
);
};
Когда я пытаюсь получить данные в MockTable
или в UseCasePane
, значение равно undefined
.
// MockTable.js
import React, { useState, useEffect, useContext } from "react";
import { MockContext } from "./MockContext";
const MockTable = () => {
const [data, setData] = useContext(MockContext);
console.log(data);
// rest of the code
}
Пожалуйста, поправьте меня, где я ошибаюсь:)
Я также пытался передать строку из контекст и извлекается в компоненте, например:
return (
<MockContext.Provider data={"Hello"}>
{props.children}
</MockContext.Provider>
);
// in MockTable.js
const value = useContext(MockContext); ==> undefined