1 回答

TA貢獻1797條經(jīng)驗 獲得超4個贊
您必須在代碼中修復(fù)一些問題。
您正在使用缺省值 創(chuàng)建上下文。然后稍后您嘗試將其重寫為對象,從而導(dǎo)致類型錯誤。
false
要解決此問題,請在單獨的文件/幫助程序中創(chuàng)建和導(dǎo)出上下文。不要把它們作為道具傳下去。
導(dǎo)入父組件和子組件中的上下文。
您在子組件中的樂趣缺少.
handleClick
arrow
in 子組件直接調(diào)用函數(shù)。您應(yīng)該只傳遞函數(shù)引用。
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>
)
}
添加回答
舉報