クリックするとその場所のpositionが取得できるようにしたく、以下のように実装しました。
初回クリックをしたらpositionに値が入っているのですが、違う配列を押下してもpositionの値が変わりません。
わかる人いましたらご教授お願いしたいです
const CardPortal = styled(Card)<{ top: number; right: number }>` position: absolute; top: ${(props) => props.top}px; left: ${(props) => props.right}px; `; const Test: FunctionComponent = () => { const cardRef = useRef<HTMLDivElement>(null); const [positionTop, setPositionTop] = useState(0); const [positionRight, setPositionRight] = useState(0); const check = () => { console.log(positionTop); setPositionTop(cardRef.current.getBoundingClientRect().top); setPositionRight(cardRef.current.getBoundingClientRect().left); }; const aaa = [1, 2, 3, 4]; return ( <> {aaa.map((aa) => ( <div style={{ height: '100px', background: 'red' }} ref={cardRef} key={aa} onClick={check}> positionを取得 </div> ))} <CardPortal height={300} width={250} top={positionTop} right={positionRight}></CardPortal> </> ); }; export default Test;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/20 10:29
2020/10/20 10:50
退会済みユーザー
2020/10/20 12:21
2020/10/20 12:23
退会済みユーザー
2020/10/20 12:56