• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

다이나믹 라우팅 안에서 다른 다이나믹 라우팅으로 이동할때 발생하는 에러.

23.10.14 04:44 작성 조회수 108

1

안녕하세요!

user/[id].js 페이지 안에서 hashtag/[tag] 페이지로 이동하는 버튼을 만들에 사용 하면 알맞은 페이지로 이동하는 것이 아니라 user/hashtag/[tag]로 이동하게 됩니다.

참고로, hashtag/[tag]로 이동하는 버튼을 Applayout에 추가 하고 user/[id]페이지에서 Applayout 컴퍼턴트로 감싸 줬습니다.

Screenshot 2023-10-14 at 4.36.08 AM.png

이 페이지에서 상단에 Search버튼을 누르면,

Screenshot 2023-10-14 at 4.36.22 AM.png이런 페이지로 이동합니다...

import React,{useCallback} from 'react'
import {HStack, Input, Button, Modal, ModalOverlay, ModalContent, ModalHeader, ModalBody, ModalCloseButton, useDisclosure} from '@chakra-ui/react'
import {BiSearch} from 'react-icons/bi'
import { css } from '@emotion/react'
import Router from 'next/router'
import PropTypes from 'prop-types'

import useInput from '../hooks/useInput'
import Spacer from './CustomizedUI/Spacer'

const buttonCss = css`
  :hover {
    background-color: transparent;
    color: #1890ff;
  }
`;

export default function SearchButton({type, children}) {
  const { isOpen, onOpen, onClose } = useDisclosure();
  const [value, onChangeValue, setValue] = useInput('')

  const onClickHandler = useCallback(()=>{
    Router.push(`hashtag/${value}`);
  },[value])

  const ConditionButton = type;

  return (
    <>
      <ConditionButton
        variant="ghost"
        aria-label="Search Button"
        icon={<BiSearch />}
        leftIcon={type === Button && <BiSearch />}
        onClick={onOpen}
        fontSize="25px"
        css={buttonCss}
      >
        {children}
      </ConditionButton>
      <Modal isOpen={isOpen} onClose={onClose} size="md" isCentered>
        <ModalOverlay />
        <ModalContent>
          <ModalHeader>Search</ModalHeader>
          <ModalCloseButton />
          <ModalBody>
            <HStack>
              <Input
                type="text"
                value={value}
                onChange={onChangeValue}
                required
              />

              <Button onClick={onClickHandler}>Search</Button>
            </HStack>
            <Spacer />
          </ModalBody>
        </ModalContent>
      </Modal>
    </>
  );
}

SearchButton.propTypes = {
  type: PropTypes.elementType.isRequired,
  children: PropTypes.node.isRequired,
}

이것은 제가 만든 컴퍼넌트인데, 혹시 어디서 문제가 있는걸까요?

혹시나 해서 Chakra UI 상의 문제 아닐까 해서 antd로도 해봤는데, 같은 오류가 납니다.

신기한 오류라서 질문드립니다.

감사합니다.

답변 1

답변을 작성해보세요.

1

Router.push 시 /search/ 이렇게 앞에 슬래시를 붙이세요. 앞에 슬래시가 없으니 현재 경로에 추가되는 겁니다.

감사합니다!