React 앱의 동적 뒤로 버튼
3176 단어 reactjavascriptbeginners
예를 들어 누군가가
/admin/approveusers
에 있는 경우 뒤로 버튼을 누르면 사용자가 /admin
로 이동합니다. 동일한 버튼을 /admin/allusers
에 있는 구성 요소에 배치하면 사람들이 /admin
로 이동합니다.react-router-dom
속성을 뒤지기 시작했습니다. location
, history
, match
. 기존 경로에서 레벨을 뺀 값을 포함하는 속성을 찾지 못했습니다. 내가 놓쳤거나 실제로 존재하지 않을 수도 있습니다(시도해야 했습니다!). 역사상 흥미로운 goBack()
방법이 있습니다. 그러나 그것은 나쁜 생각처럼 보였습니다. 사용자가 부모 경로로 뒤로 버튼이 있는 Component를 입력할 것으로 예상하더라도 직접 url을 입력한 결과 누군가가 Component에 들어갈 수 있습니다. 이 경우 히스토리에서 goBack()
메소드를 사용하는 뒤로 버튼은 엉망이 될 것입니다.나는 온라인으로 많은 조사를 하지 않았고, 다음과 같이 해결했습니다. 해킹일 수도 있고 모범 사례일 수도 있고 끔찍할 수도 있습니다. 댓글로 알려주세요! 그것은 일을 끝내고 중요한 것입니다.
구성 요소의 경로를 포함하는
match.path
react-router-dom
속성을 사용하고 있습니다. 즉 /admin/active
. 그것으로 나는 다음을 수행합니다./
로 나눕니다. 결과적으로 배열을 얻습니다. .filter
. 다른 배열을 얻습니다. 내 구성 요소 아래를 참조하십시오.
import React from 'react';
import { Link } from 'react-router-dom';
const BackButton = ({ match }) => {
const arr = match.path.split('/');
const currPage = arr[arr.length - 1];
const parentPath = arr
.filter((item) => {
return item !== currPage;
})
.join('/');
return <Link to={parentPath}>{`<-- Back`}</Link>;
};
export default BackButton;
2020년 3월 10일 편집
경로(
BackButton
)의 최상위 수준에서 /
구성 요소를 사용하면 어떻게 됩니까? 이 경우 다시 돌아갈 수 있는 레벨이 없습니다. 내 구성 요소를 다음과 같이 리팩토링했습니다.import React from 'react';
import { Link } from 'react-router-dom';
const BackButton = ({ match, destination }) => {
let parentPath;
if (match.path === '/') {
parentPath = `/${destination}`;
} else {
const arr = match.path.split('/');
const currPage = arr[arr.length - 1];
parentPath = arr
.filter((item) => {
return item !== currPage;
})
.join('/');
}
return (
<Link to={parentPath}>
{match.path === '/'
? `<-- ${destination.charAt(0).toUpperCase() + destination.slice(1)}`
: '<-- Back'}
</Link>
);
};
export default BackButton;
destination
소품을 추가했습니다(부모 구성 요소, 즉 destination='login'
에서 정의하고 있습니다. 해당 대상을 수집하고 match.path === '/'
일 때 사용합니다. 이 경우 parentPath
를 /${destination}
로 설정하고 링크의 텍스트는 첫 글자가 대문자인 destination
소품에서 오는 문자열이 됩니다.
Reference
이 문제에 관하여(React 앱의 동적 뒤로 버튼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/petrussola/dynamic-back-button-in-your-react-app-13il텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)