1 回答
TA贡献1797条经验 获得超4个赞
您必须在代码中修复一些问题。
您正在使用缺省值 创建上下文。然后稍后您尝试将其重写为对象,从而导致类型错误。
false要解决此问题,请在单独的文件/帮助程序中创建和导出上下文。不要把它们作为道具传下去。
导入父组件和子组件中的上下文。
您在子组件中的乐趣缺少.
handleClickarrowin 子组件直接调用函数。您应该只传递函数引用。
button onClick
请参阅更新后的代码,并在下面进行更正。
上下文帮助程序
...
type ContextProps = {
setDialogOpen?: (open: boolean) => void,
};
export const DialogContext = React.createContext<ContextProps>({});
主组件
import {DialogContext} from '../contextHelper';
function MainComponent() {
// const DialogContext = React.createContext(false); //<---- remove this
let [showDialog, setShowDialog] = React.useState(false);
return (
<DialogContext.Provider value={{
setDialogOpen: (open: boolean) => setShowDialog(open)}}>
...
家庭和书籍组件
import {DialogContext} from '../contextHelper';
function Home() {
const dialogContext= React.useContext(DialogContext);
const handleClick = () => {
dialogContext.setDialogOpen(true);
}
return (
<button onClick={handleClick}>button1</button>
)
}
import {DialogContext} from '../contextHelper';
function Books() {
const dialogContext= React.useContext(DialogContext);
const handleClick = () => {
dialogContext.setDialogOpen(true);
}
return (
<button onClick={handleClick}>button2</button>
)
}
添加回答
举报
