【发布时间】:2020-11-26 12:32:43
【问题描述】:
我正在尝试使用 Context API 将数据传递给子组件。值在从组件中获取时得到undefined。
组件层次结构:
- 将数据传递给组件
MockTable和UsecasePane MainContent -> MockTableMainContent -> 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
【问题讨论】:
-
没有错误吧?
-
什么是未定义的?您正在记录 data1 而不是 data?
-
@AyushWalia:有错误。它将显示对象不可迭代,因为该值未定义
-
@codemax:对不起!错字。请再次检查:)
-
response.data 是一个数组吗?它在
中的设置是否正确?
标签: javascript reactjs react-hooks react-context