안녕하세여
리액트 사용해서 프로그램 만들기 진행 중에
실시간으로 에이젝스를 날려서 가져온 값이 하위 컴포넌트의 조건문을 거쳐서 함수가 실행되야되는데 안됩니다ㅜㅜ
(부모 컴포넌트의 변경된 전역변수가 실시간으로 하위컴포넌트의 props에 반영되고 싶어요)
1. 부모 컴포넌트의 전역변수의 값을 하위 컴포넌트에 보내줌.
export function MainComponent(){ //컴포넌트
const variable ={
this_waitCnt
,this_isWait
}
let [SendProps, setSendProps] = useState([
variable //0
,ajaxFunction //1
]);
let [WaitPage , set] = useState();
return(
{WaitPage && <IsWait SendProps ={SendProps}/>}
);
};
2. 하위 컴포넌트에서 setInterval 함수에서 조건문을 해당 값 체크
export function IsWait(props){
useEffect(() => {
let playAlert = setInterval(function() {
let iswait = props.SendProps[0].this_isWait; //초기값인 undefined로 계속 돌아감
if ( iswait == "T" ) {
checkData();
}
}, 1000);
return () => clearInterval(playAlert);
}, []);
function checkData(){
ajaxFunction();
};
};
3. 2번의 checkData()에서 부모 com의 에이젝스를 호출하고 suc값이 부모의 전역변수 들어감.
4. 바뀐 전역변수로 하위컴포넌트의 함수 실행
이렇게 되어야 하는데 하위컴포넌트로 들어온 pros가 초기값인 usdefined로 계속 돌아가요 ㅠㅠ
도와주세요 애플맨.