【发布时间】:2023-03-19 07:15:01
【问题描述】:
我目前正在修改我的 DataProvider,使用 React Hooks 将其从类组件更新为功能组件。
我认为我的问题在于我设置上下文使用者的方式,但我还没有找到测试它的好方法。
DataProvider.js
import React, { createContext } from "react";
const DataContext = createContext();
export const DataProvider = (props) => {
const [test, setTest] = React.useState("Hello");
return (
<DataContext.Provider value={test}>{props.children}</DataContext.Provider>
);
};
export const withContext = (Component) => {
return function DataContextComponent(props) {
return (
<DataContext.Consumer>
{(globalState) => <Component {...globalState} {...props} />}
</DataContext.Consumer>
);
};
};
所以我的 withContext 函数应该接收一个组件并将其传递给 Context Provider 的 props。
我尝试将我的测试状态拉入组件中。
import React from "react";
import style from "./DesktopAboutUs.module.css";
import { withContext } from "../../DataProvider";
const DesktopAboutUs = ({ test }) => {
return (
<div className={style.app}>
<div>{test}</div>
</div>
);
};
export default withContext(DesktopAboutUs);
test 没有数据显示。对我来说,这表明我的 withContext 函数没有正确接收来自 Provider 的道具。
【问题讨论】:
-
我想你的意思是
value={{test}}。 -
@PatrickRoberts 你为什么这么说?你说的不对。
-
@PraveenKumarPurushothaman
globalState是test,当value={test}时是字符串而不是对象 -
是的,我觉得一样,应该是value={{test}}。
-
@PatrickRoberts Ahhh...
标签: javascript reactjs