[英]state is not defined in switch by javascript
我想在開關中使用 state 作為道具
如果頁面是板,我想獲得 postData 和 PostLoading。 然后交給pagePresenter。 researchData和researchLoading是null。
下面的代碼顯示 postData、postLoading、researchData、researchLoading 未定義。
export default ({
match: {
params: { code, page },
},
}) => {
switch(page){
case "board":
const { data: postData, loading: postLoading } = useQuery(ALL_POST, {
variables: { code },
fetchPolicy: "network-only",
});
const onPostClick = (id, code) => {
history.push(`/article/${code}/${id}`);
};
break;
case "research":
const { data: researchData, loading: researchLoading } = useQuery(
ALL_RESEARCH,
{
variables: { code },
}
);
break;
default:
return null;
}
return (
<PagePresenter
type={page}
postLoading={postLoading ? postLoading : null}
postData={postData ? postData : null}
researchLoading={researchLoading ? researchLoading : null}
researchData={researchData ? researchData : null}
/>
)
}
我懷疑因為你在switch
的上下文中聲明了const { data: postData, loading: postLoading }
,所以它在這個上下文之外是未定義的。 就像在 function 內部聲明一個變量一樣。我建議你利用useState
鈎子。 只需在switch
外部初始化一個空白 state 並在獲取postData
后將其設置為postData
。
所以在你的switch
外面的某個地方做const [postDataState, setPostData] = useState(undefined)
然后在你有你的postData
之后,做setPostData(postData)
。
最后,將postDataState
作為 props 傳遞給您的組件。 所以不是postData={postData? postData: null}
postData={postData? postData: null}
你會說postData={postDataState? postDataState: null}
postData={postDataState? postDataState: null}
不要忘記import {useState} from 'react'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.