反応性ゆったりパンツクローンコード1
ログインステータス画面(localhost:3090/workspace/channel)で、右上隅のメニューボタンのログアウトボタンをクリックし、ログイン画面(localhost:3090/login)に移動します.
学習:
...
if(!userData){
return <Redirect to ="/login"/>
}
const onClickCreateWorkSpace = useCallback(()=>{},[])
...
このように書くと間違います!returnの後ろにhooksと書くとエラーになりますので、代わりに
...
const onClickCreateWorkSpace = useCallback(()=>{},[])
if(!userData){
return <Redirect to ="/login"/>
}
...
...
//리액트의 propTypes 와 동일한 역할. 타입에 대한 변수를 제네릭?으로 넣어준다
interface Props {
show:boolean;
onCloseModal:() => void;
style:CSSProperties;
closeButton?:boolean;
}
const Menu:FC<Props> = ({children,style,show,onCloseModal,closeButton}) => {
...
...
//props들의 기본값을 설정해 주려면 이렇게 쓰면 된다
Menu.defaultProps = {
closeButton : true,
};
...
...
// 변수 뒤에 클론을 붙이면 변수명을 바꿀 수 있다.
const {data:userData,error,mutate} = useSWR('http://localhost:3095/api/users', fetcher)
...
const stopPropagation = useCallback((e)=>{
// 부모태그로 onClick 이벤트가 전달되는 걸 막기 위함. (이벤트 버블링 막기)
e.stopPropagation()
},[])
return (
<CreateMenu onClick={onCloseModal}>
<div style={style} onClick={stopPropagation}>
{closeButton && <CloseModalButton onClick={onCloseModal}>×</CloseModalButton>}
{children}
</div>
</CreateMenu>
);
Reference
この問題について(反応性ゆったりパンツクローンコード1), 我々は、より多くの情報をここで見つけました https://velog.io/@hw020123/리액트-슬랙-클론코딩-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol